VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群

1.前期准备

1.1 三台可以访问外网的 Centos7 虚拟机,集群之间网络互通。

机器名 IP地址 CPU 内存 硬盘 操作系统
master 192.168.133.131 2核心 2G 20G CentOS 7.x
node1 192.168.133.130 2核心 2G 20G CentOS 7.x
node2 192.168.133.132 2核心 2G 20G CentOS 7.x

1.2 使用xshell连接三台机器(也可直接操作三台机器)

VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第1张图片

2.环境配置

2.1 在master,node1,node2三台机器上分别执行以下命令关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

master:
VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第2张图片
node1:
在这里插入图片描述
node2:
VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第3张图片

2.2 在master,node1,node2三台机器上分别执行以下其中之一的命令关闭selinux

永久关闭:

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

临时关闭:

setenforce 0

master:
VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第4张图片
node1:
VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第5张图片
node2:
VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第6张图片

2.3 在master,node1,node2三台机器上分别执行以下其中之一的命令关闭swap

永久关闭(需要重启机器才能生效):

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

临时关闭:

swapoff -a

master:
VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第7张图片
node1:
VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第8张图片
node2:
VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第9张图片

2.4 为master,node1,node2三台机器分别设置主机名

master:

hostnamectl set-hostname master

VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第10张图片
node1:

hostnamectl set-hostname node1

VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第11张图片
node2:

hostnamectl set-hostname node2

VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第12张图片

2.5 在master机器上添加hosts

cat >> /etc/hosts << EOF
192.168.133.131 master
192.168.133.130 node1
192.168.133.132 node2
EOF

master:
VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第13张图片

2.6 在master,node1,node2三台机器上分别执行以下命令将桥接的IPv4流量传递到iptables的链

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

master:
VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第14张图片
node1:
VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第15张图片
node2:
VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第16张图片

2.7 在master,node1,node2三台机器上分别执行以下命令进行时间同步

yum install ntpdate -y
ntpdate time.windows.com

master:
VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第17张图片
node1:
VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第18张图片
node2:
VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第19张图片

3. 在所有节点上安装 docker/kubeadm/kubelet/kubectl

注: 此处以master机器为例,node1和node2执行相同操作:

3.1 安装 docker

(1)下载docker

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

在这里插入图片描述
(2)安装docker

yum -y install docker-ce-18.06.1.ce-3.el7

VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第20张图片
(3)设置docker开机启动并启动docker

systemctl enable docker && systemctl start docker

在这里插入图片描述
(4)查靠docker版本

docker --version

在这里插入图片描述
(5)设置docker镜像源为阿里云

cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF

VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第21张图片

3.2 配置 yum 的 kubernetes 软件源

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
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第22张图片

3.3 安装 kubeadm/kubelet/kubectl

(1)通过 yum 安装 kubeadm/kubelet/kubectl

yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0

VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第23张图片
(2)设置开机启动

systemctl enable kubelet

在这里插入图片描述

4. 部署 kubernetes Master 节点

master节点执行以下所有操作:

4.1 拉取kubernetes镜像

注:apiserver-advertise-address 是master节点的IP地址

kubeadm init \
  --apiserver-advertise-address=192.168.133.131 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.18.0 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16

VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第24张图片

4.2 查看拉取的kubernetes镜像

docker iamges

在这里插入图片描述

4.3 使用kubectl工具

注:这是步骤 4.1 执行后得到的命令

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

在这里插入图片描述

4.4 查看正在运行的节点

在这里插入图片描述

5. 加入 kubernetes Node节点

5.1 分别在 node1 和 node2 上执行以下命令

注:这是步骤 4.1 执行后得到的命令,需要复制自己生成的!其中join的 IP 是 master 节点的IP地址

kubeadm join 192.168.133.131:6443 --token llzhas.arbjb9of0gu3294z \
  --discovery-token-ca-cert-hash sha256:948cf5b751852732a4b4c13e54c4e56cb23efb0314bf2a8e4725091fd5aef0b8

node1:
VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第25张图片
node2:
VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第26张图片

5.2 在 master 节点上执行以下命令查看正在运行的节点

kubectl get node

VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第27张图片

6. 部署CNI网络插件

node1和node2处于NotReady状态,在master节点执行以下所有操作:

6.1 添加yum插件

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

VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第28张图片

6.2 查看kube-system状态

kubectl get pods -n kube-system

VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第29张图片

6.3 查看节点状态

kubectl get node

VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第30张图片

7. 测试kubernetes集群

7.1 下载nginx镜像

kubectl create deployment nginx --image=nginx

VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第31张图片

7.2 查看状态

注:当处于Running状态时,表示已经成功运行!

kubectl get pod

VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第32张图片

7.3 对外暴漏端口

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

VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第33张图片

7.4 查看对外暴漏的端口

kubectl get pod.svc

VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第34张图片

7.5 在宿主机上通过对外暴漏的端口在三台机器上访问nginx

master : http://192.168.133.131:30568

VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第35张图片

node1 : http://192.168.133.130:30568

VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第36张图片

node2 : http://192.168.133.132:30568

VMWare虚拟机Centos操作系统下基于kubeadm方式搭建K8S集群_第37张图片

8. 参考资料

https://www.bilibili.com/video/BV1GT4y1A756?p=1

你可能感兴趣的:(centos,运维,linux,docker,kubernetes)