【云原生K8S】kubeadm部署kubernetes集群

目录

一、节点基础环境

Ⅰ、关闭防火墙

Ⅱ、关闭SElinux

Ⅲ、关闭swap

Ⅳ、 iptables

Ⅴ、域名-ip对应

二、安装所需部件

Ⅰ、docker-ce

Ⅱ、kubelet、kubectl、kubeadm下载安装

Ⅲ、拉取必要镜像

Ⅳ、Master节点安装网络组件

三、构建集群

Ⅰ、在master节点上进行初始化

(1)初始化报错

(2)解决

Ⅱ、node加入集群

(1)加入集群报错

(2)解决

 Ⅲ、查看集群信息

(1)查询K8S集群节点状态  

(2)查看K8S集群中Pod信息

(3)查看K8S集群组件健康状态 

kubelet无法开启报错

kubelet和docker的Cgroup Driver不同导致kubelet开启失败

查看docker的Cgroup Driver

查看kubelet 的Cgroup Driver

修改docker的Cgroup Driver

修改kubelet 的Cgroup Driver


集群环境

IP 节点 所需部件
192.168.116.23 master docker-ce、kubeadm、kubelet、kubectl
192.168.116.24 node1 docker-ce、kubeadm、kubelet、kubectl
192.168.116.25 node2 docker-ce、kubeadm、kubelet、kubectl

一、节点基础环境

Ⅰ、关闭防火墙

systemctl disable --now firewalld.service

Ⅱ、关闭SElinux

sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

Ⅲ、关闭swap

free -m
#查看swap情况
sed -ri 's/.*swap.*/#&/' /etc/fstab

重启后生效

【云原生K8S】kubeadm部署kubernetes集群_第1张图片

Ⅳ、 iptables

cat <
cat <
sysctl --system

Ⅴ、域名-ip对应

 添加要作为master节点的服务器IP的域名对应关系

echo "192.168.116.23   cluster-endpoint">> /etc/hosts

二、安装所需部件

Ⅰ、docker-ce

具体请参考Docker概念与基础操作

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo && yum install -y docker-ce
systemctl enable --now docker.service

docker --version

【云原生K8S】kubeadm部署kubernetes集群_第2张图片

Ⅱ、kubelet、kubectl、kubeadm下载安装

添加yum源

cat <

 进行下载,注意版本一致问题

sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 
sudo systemctl enable --now kubelet

Ⅲ、拉取必要镜像

  1. kube-apiserver:v1.20.9

  2. kube-proxy:v1.20.9

  3. kube-controller-manager:v1.20.9

  4. kube-scheduler:v1.20.9

  5. coredns:1.7.0

  6. etcd:3.4.13-0

  7. pause:3.2

使用脚本完成镜像拉取

sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOF

执行脚本 

chmod +x ./images.sh && ./images.sh

Ⅳ、Master节点安装网络组件

curl https://docs.projectcalico.org/v3.20/manifests/calico.yaml -O
kubectl apply -f calico.yaml

三、构建集群

Ⅰ、在master节点上进行初始化

kubeadm init \
--apiserver-advertise-address=192.168.116.23 \
--control-plane-endpoint=cluster-endpoint \
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=192.168.0.0/16

 初始化后成功注意以下信息,上面的命令在master执行,下面的在要加入集群的node服务器上执行。

【云原生K8S】kubeadm部署kubernetes集群_第3张图片

(1)初始化报错

[kubelet-check] Initial timeout of 40s passed.
error execution phase upload-config/kubelet:
Error writing Crisocket information for the control-plane node: timed out waiting for the condition

(2)解决

swapoff -a && kubeadm reset && systemctl daemon-reload && systemctl restart kubelet && iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

然后重新进行初始化

Ⅱ、node加入集群

在node节点服务器输入master服务器上初始化成功后加入集群的命令

(1)加入集群报错

failure loading certificate for CA: couldn't load the certificate file 
/etc/kubernetes/pki/ca.crt: open /etc/kubernetes/pki/ca.crt: 
no such file or directory

【云原生K8S】kubeadm部署kubernetes集群_第4张图片

疑似缺失证书文件 

(2)解决

实际上发现,是在复制执行命令时带上了--control-plane,去掉后表示为以node服务器加入集群(摊手)  

【云原生K8S】kubeadm部署kubernetes集群_第5张图片

 Ⅲ、查看集群信息

在master节点使用kubectl命令行工具进行查看目前集群情况

kubectl命令格式:

kubectl [command] [TYPE] [NAME] [flags]

(1)查询K8S集群节点状态  

kubectl get nodes

【云原生K8S】kubeadm部署kubernetes集群_第6张图片

(2)查看K8S集群中Pod信息

kubectl get pod -A

【云原生K8S】kubeadm部署kubernetes集群_第7张图片

(3)查看K8S集群组件健康状态 

kubectl get cs

 这里很明显两个大大的“Unhealthy”不健康写在面前,需要我们去修改一下端口号来解决

vim /etc/kubernetes/manifests/kube-controller-manager.yaml

【云原生K8S】kubeadm部署kubernetes集群_第8张图片

vim /etc/kubernetes/manifest/kube-scheduler.yaml

【云原生K8S】kubeadm部署kubernetes集群_第9张图片

 稍微等待一会,再次查看,这回都是healthy了

【云原生K8S】kubeadm部署kubernetes集群_第10张图片

kubelet无法开启报错

kubelet和docker的Cgroup Driver不同导致kubelet开启失败

查看Cgroup Driver

查看docker的Cgroup Driver

docker info | grep Driver

【云原生K8S】kubeadm部署kubernetes集群_第11张图片

查看kubelet 的Cgroup Driver

systemctl show --property=Environment kubelet | cat

修改docker的Cgroup Driver

/etc/docker/daemon.json

{
   "exec-opts": ["native.cgroupdriver=systemd"]
}

修改kubelet 的Cgroup Driver

vim /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf

–-cgroup-driver=systemd
#添加或修改
systemctl daemon-reload 

systemctl restart docker

systemctl restart kubelet

你可能感兴趣的:(kubernetes,云原生,docker)