在网上已经找了无数个教程,但是基本每个都有坑(即使是无坑版)😭,大部分都是版本问题,所以推荐大家以后搭环境的时候还是选最新版的教程,不然巨容易踩坑。


目录

  • VMware16搭建k8s集群(亲试无坑🙏)
  • 一、环境介绍
  • 二、系统前置要求(三台机器全部执行)
  • 三、安装docker(三台机器全部执行)
  • 四、安装k8s服务(三台机器全部执行)
  • 五、master节点部署服务
  • 六、node节点加入集群
  • 七、验证是否加入成功
  • 七、验证集群是否可用


VMware16搭建k8s集群(亲试无坑🙏)

一、环境介绍

环境如下:

  • 虚拟机:VMware Pro 16
  • 操作系统:CentOS7.x-86_x64
  • 集群设置:1 master,2 node
  • 硬件配置:2GB,2个CPU,硬盘30GB以上
  • 网络配置:均为NAT
  • master节点IP:192.168.253.148
  • node1节点IP:192.168.253.149
  • node2节点IP:192.168.253.150

前置条件:

  • 集群中所有机器之间网络互通
  • 可以访问外网,需要拉取镜像
  • 禁止swap分区

注意:有些命令需要三台机器都执行,但有些并不是,注意区分!!!

二、系统前置要求(三台机器全部执行)

1.关闭防火墙

systemctl stop firewalld

开机禁用防火墙自启:

systemctl disable firewalld.service

2.关闭selinux

sed -i 's/enforcing/disabled/' /etc/selinux/config

3.关闭swap

swapoff -a

永久关闭

sed -ri 's/.*swap.*/#&/' /etc/fstab

4.设置主机名

hostnamectl set-hostname 当前主机名

三个主机名分别设置成master,node1,node2,即

hostnamectl set-hostname master
hostnamectl set-hostname node1
hostnamectl set-hostname node2

5.修改hosts文件

echo "192.168.253.148  master" >> /etc/hosts
echo "192.168.253.149  node1" >> /etc/hosts
echo "192.168.253.150  node2" >> /etc/hosts
cat /etc/hosts

6.将桥接的IPv4流量传递到iptables的链

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

7.执行以下命令让设置生效

sysctl --system

三、安装docker(三台机器全部执行)

1.安装docker依赖包

yum install -y yum-utils

2.设置阿里镜像仓库
因为某些原因可能访问不到国外仓库或者速度较慢,此处设置为阿里的镜像仓库。为节省时间,我直接使用了科学上网工具。

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.安装docker服务

yum install docker-ce docker-ce-cli containerd.io -y

4.启动docker服务

systemctl start docker

5.查看docker服务是否正常启动成功

systemctl status docker

k8s集群 yarn集群 k8s集群最低配置_k8s集群 yarn集群

四、安装k8s服务(三台机器全部执行)

1.添加阿里云YUM软件源

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF

2.安装kubeadm、kubelet和kubectl
由于版本更新频繁,此处指定版本安装;并且由于依赖关系,这些安装命令最好还是一条一条的执行。

yum install -y kubectl-1.19.0
yum install -y kubelet-1.19.0
yum install -y kubeadm-1.19.0

3.启动k8s服务

systemctl enable kubelet

4.查看k8s服务是否正常启动成功

systemctl status kubelet

五、master节点部署服务

!!!以下命令只需要在master上面执行

1.在master节点上部署kubetnets

kubeadm init --kubernetes-version=1.19.0 --apiserver-advertise-address=master的ip --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16

看到successfully,成功啦

k8s集群 yarn集群 k8s集群最低配置_docker_02


复制以下命令,后续会用到:

k8s集群 yarn集群 k8s集群最低配置_ci_03


2.创建文件夹将admin.conf文件copy到对应的位置

执行刚刚复制的控制台上面输出的successfully下面那几条命令

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

3.查看现在k8s情况

kubectl get nodes

k8s集群 yarn集群 k8s集群最低配置_docker_04


现在只有一个master节点,后续加入另外两个node节点。

4.安装部署CNI网络插件

在master机器上执行命令

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

成功后查看pods验证一下:

kubectl get pods -n kube-system

k8s集群 yarn集群 k8s集群最低配置_kubernetes_05


直到前面两个ready

六、node节点加入集群

1.node节点加入集群

分别在node1和node2中,执行刚刚kubeadm init成功后下面打印的命令:

kubeadm join 192.168.253.148:6443 --token 6509w1.4nu34gycu80kl4h5 \
    --discovery-token-ca-cert-hash sha256:9560eb6f7201c8032469a4204f33b0e0dd83a7118ede09d3b04c6d4ab2d723d2

七、验证是否加入成功

在master节点中执行:

kubectl get nodes

k8s集群 yarn集群 k8s集群最低配置_nginx_06


这三个都为Ready,即说明k8s的安装部署完成!

七、验证集群是否可用

1.在kubenetes集群中创建一个pod创建nginx
(master中执行)

kubectl create deployment nginx --image=nginx

2.暴露Nginx端口

kubectl expose deployment nginx --port=80 --type=NodePort

3.查看Nginx端口

kubectl get pod,svc

k8s集群 yarn集群 k8s集群最低配置_k8s集群 yarn集群_07

4.任意一个节点的ip加上端口访问看是否成功

在node1中访问node2的nginx服务,成功!

k8s集群 yarn集群 k8s集群最低配置_docker_08


撒花完结!🎉🎉🎉