目录

一、节点基础环境

Ⅰ、关闭防火墙

Ⅱ、关闭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.23masterdocker-ce、kubeadm、kubelet、kubectl192.168.116.24node1docker-ce、kubeadm、kubelet、kubectl192.168.116.25node2docker-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

重启后生效

Ⅳ、 iptables

cat <

br_netfilter

EOF

cat <

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

EOF

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

Ⅱ、kubelet、kubectl、kubeadm下载安装

添加yum源

cat <

[kubernetes]

name=Kubernetes

baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=0

repo_gpgcheck=0

gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

exclude=kubelet kubeadm kubectl

EOF

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

sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9

sudo systemctl enable --now kubelet

Ⅲ、拉取必要镜像

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

使用脚本完成镜像拉取

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服务器上执行。

(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

疑似缺失证书文件 

(2)解决

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

 Ⅲ、查看集群信息

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

kubectl命令格式:

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

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

kubectl get nodes

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

kubectl get pod -A

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

kubectl get cs

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

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

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

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

kubelet无法开启报错

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

查看Cgroup Driver

查看docker的Cgroup Driver

docker info | grep Driver

查看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

参考文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。