您的当前位置:首页正文

使用kubeadm搭建K8S 1.16.0集群

来源:华佗小知识

前提:

1、操作系统Centos 7.4
2、通过阿里云相关镜像源安装

操作步骤:

1、修改主机名

hostnamectl set-hostname hanyu1

vi /etc/resolv.conf

nameserver 10.150.0.251

2、安装docker

安装必要的工具

yum install -y yum-utils device-mapper-persistent-data lvm2

配置官方docker源或者aliyun docker源

或者

查询docker版本(否则yum install默认安装最新的版本)

yum list docker-ce --showduplicates | sort -r

安装指定版本docker

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

启动docker

systemctl enable docker && systemctl start docker

查询docker服务状态

systemctl status docker

查看docker版本

docker version

安装kubelet、kubeadm 和 kubectl

配置kubernetes.repo的源,由于官方源国内无法访问,这里使用阿里云yum源

在所有节点上安装指定版本 kubelet、kubeadm 和 kubectl(这里我安装1.16.0,目前最新版本)

yum list kubectl --showduplicates | sort -r
yum list kubeadm --showduplicates | sort -r
yum list kubelet --showduplicates | sort -r
yum install -y kubectl-1.16.0-0 kubeadm-1.16.0-0 kubelet-1.16.0-0

启动kubelet服务

systemctl enable kubelet && systemctl start kubelet

关闭swap分区

swapoff -a

初始化master节点

按照kubeadm init成功后打印提示,继续操作:

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

kubectl get nodes查询到节点处于NotReady状态,是因为网络插件还未就位,也就是这里要求运行的

如果要暂时忽略让节点Ready,将如下文件的--network-plugin=cni字段去掉, (该文件是在kubeadm init或者kubeadm join过程中生成的), 修改完后重启kubelet即可(systemctl restart kubelet)

join node

查询所有node及pod状态

[root@hanyu1 ~]# kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
hanyu1 Ready master 5d22h v1.16.0 10.20.0.210 <none> CentOS Linux 7 (Core) 3.10.0-693.el7.x86_64 docker://18.9.3
hanyu2 Ready <none> 5d22h v1.16.0 10.20.0.212 <none> CentOS Linux 7 (Core) 3.10.0-693.el7.x86_64 docker://18.9.3
hanyu3 Ready <none> 5d19h v1.16.0 10.20.0.213 <none> CentOS Linux 7 (Core) 3.10.0-693.el7.x86_64 docker://18.9.3
hanyu4 Ready <none> 5d18h v1.16.0 10.20.0.214 <none> CentOS Linux 7 (Core) 3.10.0-693.el7.x86_64 docker://18.9.3
hanyu5 Ready <none> 4h9m v1.16.0 10.20.0.215 <none> CentOS Linux 7 (Core) 3.10.0-693.el7.x86_64 docker://18.9.3
hanyu6 Ready <none> 4h9m v1.16.0 10.20.0.211 <none> CentOS Linux 7 (Core) 3.10.0-693.el7.x86_64 docker://18.9.3

[root@hanyu1 ~]# kubectl get pod --all-namespaces -o wide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kube-system coredns-58cc8c89f4-nx8p7 1/1 Running 3 5d22h 172.17.0.2 hanyu1 <none> <none>
kube-system coredns-58cc8c89f4-tpd9h 1/1 Running 3 5d22h 172.17.0.3 hanyu1 <none> <none>
kube-system etcd-hanyu1 1/1 Running 3 5d22h 10.20.0.210 hanyu1 <none> <none>
kube-system kube-apiserver-hanyu1 1/1 Running 3 5d22h 10.20.0.210 hanyu1 <none> <none>
kube-system kube-controller-manager-hanyu1 1/1 Running 3 5d22h 10.20.0.210 hanyu1 <none> <none>
kube-system kube-proxy-cd6lb 1/1 Running 1 5d18h 10.20.0.214 hanyu4 <none> <none>
kube-system kube-proxy-grp6n 1/1 Running 1 5d19h 10.20.0.213 hanyu3 <none> <none>
kube-system kube-proxy-kthlt 1/1 Running 0 4h11m 10.20.0.211 hanyu6 <none> <none>
kube-system kube-proxy-vpx6w 1/1 Running 1 5d22h 10.20.0.212 hanyu2 <none> <none>
kube-system kube-proxy-wqgrc 1/1 Running 0 4h11m 10.20.0.215 hanyu5 <none> <none>
kube-system kube-proxy-xvtjc 1/1 Running 3 5d22h 10.20.0.210 hanyu1 <none> <none>
kube-system kube-scheduler-hanyu1 1/1 Running 3 5d22h 10.20.0.210 hanyu1 <none> <none>