k8s配置master节点

946 阅读2分钟

这是我参与2022首次更文挑战的第32天,活动详情查看:2022首次更文挑战

用kubeadm来初始化集群(仅master节点执行)

注意:这个命令仅在master节点执行

1)初始化集群控制台, 失败了可以用kubeadm reset重置

注意:只在主节点运行
kubeadm init --kubernetes-version=1.23.4 \
--apiserver-advertise-address=10.211.55.200 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
  
  • 执行了这个命令以后,会帮我们创建集群的控制台

  • --image-repository registry.aliyuncs.com/google_containers 指定镜像源,由于kubeadm 默认从官网k8s.grc.io下载所需镜像,国内无法访问,因此需要通过--image-repository指定阿里云镜像仓库地址

  • --kubernetes-version:版本信息 kubectl version 查询

  • 定义POD的网段为: 10.244.0.0/16

  • apiserver地址就是master本机IP地址

  • --service-cidr=10.96.0.0/12 : 这个参数后的IP地址直接就套用10.96.0.0/12 ,以后安装时也套用即可,不要更改

    --pod-network-cidr=10.244.0.0/16 : k8s内部的pod节点之间网络可以使用的IP段,不能和service-cidr写一样,如果不知道怎么配,就先用这个10.244.0.0/16

初始化失败的可以重置,使用命令

kubeadm reset

重置以后会有这样一段提示

The reset process does not clean your kubeconfig files and you must remove them manually. Please, check the contents of the $HOME/.kube/config file.

意思是kubeadm reset 执行后不会删除HOME/.kube文件,需要手动执行rmrfHOME/.kube文件,需要手动执行rm -rf HOME/.kube

然后重新初始化。

初始化的过程中异常记录

异常1:

image

It seems like the kubelet isn't running or healthy.

首先可以用命令检查kubelet的状态

systemctl status kubelet

状态返回异常

image

然后看日志,看看日志包的什么错?

journalctl -xefu kubelet

image

日志说的很清楚,没有找到/var/lib/kubelet/config.yaml文件

这个问题最后我卸载了kubelet,然后重新装了一遍就好了。

最后,看到下面的内容,就表示安装成功了

image

复制出来最后两行, 并进行保存

kubeadm join 10.211.55.200:6443 --token c8ysgy.uvo10ecrlqktmvft \
  --discovery-token-ca-cert-hash sha256:1ef77481c6c0efc18455e611d84567c3bb236da39cf98c2d0393c5454c4ba213

如果当时忘了复制,也没有关系, 使用命令重新获取

重新获取token的命令:

kubeadm token create --print-join-command

复制授权文件(仅master节点执行)

注意:这个授权文件要去在root权限下执行

复制授权文件,以便kubectl有权限访问集群
su - root
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

将工作节点加入到集群(仅在node节点执行)

将初始化主节点时生产的代码在node节点执行一下即可。

注意:要删掉第一个行后面的“\”

kubeadm join 10.211.55.200:6443 --token c8ysgy.uvo10ecrlqktmvft --discovery-token-ca-cert-hash sha256:1ef77481c6c0efc18455e611d84567c3bb236da39cf98c2d0393c5454c4ba213

在两个node节点都执行一遍

异常问题记录

异常1:

/proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1

这时我们手动设置这个为1

echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

当多次调整都不成功的时候,可以重新获取一下token

kubeadm token create --print-join-command

看到如下结果就成功了:

image

接下来可以使用kubectl来查看子节点

kubectl get node

image

我们看到有一个master节点,两个node节点。他们的状态都是NotReady ;master节点是一个控制平台,并且是主节点。

安装网络查件(在master上安装)

为什么上面节点都是NotReady呢?因为我们还需要安装一个网络插件,他们才能工作。

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

安装成功的图如下:

image

然后再查看节点状态

kubectl get node

image

现在就都是ready状态了。