暴趣科技网
您的当前位置:首页【Kubenetes】kubeadm初始化,安装网络插件calico,延长证书有效期

【Kubenetes】kubeadm初始化,安装网络插件calico,延长证书有效期

来源:暴趣科技网

一,使用kubeadm初始化k8s集群

第1步:

【如果容器为dokcer】执行下面命令:

上传通过 docker save -o 打包好的镜像文件 k8simage-1-20-6.tar.gz,然后在所有机器节点导入:

docker load -i k8simage-1-20-6.tar.gz

【如果容器为containerd】执行下面命令:

上传通过 ctr -n=k8s.io images export 打包好的镜像文件 k8s_1.26.0.tar.gz,然后在所有机器节点导入:

ctr -n=k8s.io images import k8s_1.26.0.tar.gz

# 可用查看导入到默认的containerd的命名空间内的镜像列表
ctr -n=k8s.io images ls

若是k8s相关的镜像,都默认在k8s.io这个命名空间,所以导入镜像时需要指定命令空间为k8s.io

第2步:

仅在master主节点,生成初始化的yaml文件,并且修改配置。

kubeadm config print init-defaults > kubeadm.yaml


registry.aliyuncs.com/google_containers

podSubnet: 10.244.0.0/16 

---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
find /  -name 'containerd.sock'

将查询结果路径,替换第2处的位置即可!

第3步:

初始化kubeadm,并且添加一个参数:--ignore-preflight-errors=SystemVerification

kubeadm init --config=kubeadm.yaml --ignore-preflight-errors=SystemVerification

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

【特别提醒】:
此时会生成文件config,在/root/.kube/config,将它拷贝到其他node机器节点对应的路径下,就可以执行使用kubectl命令了

# 也可以通过此命令查看config内容:
kubectl config view

二,将节点机器,加入集群

在master控制节点上,查看加入节点的命令:

kubeadm token create --print-join-command

显示如下:
kubeadm join 192.168.40.190:43 --token vulvta.9ns7da3saibv4pg1  --discovery-token-ca-cert-hash sha256:72a06e27521244850b8f1c3b600087292c2d10f2565adb56381f1f4ba7057a

在node节点上,把node1加入k8s集群:

kubeadm join 192.168.40.180:43 --token vulvta.9ns7da3saibv4pg1  --discovery-token-ca-cert-hash sha256:72a06e27521244850b8f1c3b600087292c2d10f2565adb56381f1f4ba7057a --ignore-preflight-errors=SystemVerification

【注意】:一定加入该参数,--ignore-preflight-errors=SystemVerification

如果忘记加,已经生成了证书,再次执行提示证书已经存在 “already exists”,此时需要重置后,再执行:

# 重置
kubeadm reset

【扩展】:为node节点打标签

kubectl labe node meinode[节点名] node-role.kubernetes.io/worker=worker[标签名称]

三,安装网络插件calico

此时,集群状态还是NotReady状态,因为没有安装网络插件,下面安装网络插件calico。安装版本要统一,尽量不要安装最新版本!

该文件特殊说明:

安装插件calico

kubectl apply -f  calico.yaml

四,测试在k8s创建pod是否可以正常访问网络

1,在node节点导入 busybox-1-28.tar.gz 镜像,并且加载

docker load -i busybox-1-28.tar.gz

2,在master节点创建容器,并测试网络

kubectl run busybox --image busybox:1.28 --image-pull-policy=IfNotPresent --restart=Never --rm -it busybox --sh

进入容器内后:

ping www.baidu.com
# 显示如下内容
PING www.baidu.com (39.156.66.18): 56 data bytes
 bytes from 39.156.66.18: seq=0 ttl=127 time=39.3 ms
nslookup kubernetes.default.svc.cluster.local
# 显示如下内容
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      kubernetes.default.svc.cluster.local
Address 1: 10.96.0.1 kubernetes.default.svc.cluster.local

K8S证书过期解决方案

查看证书有效时间:

openssl x509 -in /etc/kubernetes/pki/ca.crt -noout -text  |grep Not
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text  |grep Not

延长证书过期时间

1.把update-kubeadm-cert.sh文件上传到master节点

2.在master节点上执行如下:

# 添加可执行权限
chmod +x update-kubeadm-cert.sh
# 执行命令,把时间延长到10年
./update-kubeadm-cert.sh all
# 在master节点查询Pod是否正常,能查询出数据说明证书签发完成
kubectl  get pods -n kube-system

# 执行第一步命令,再次查看证书有效期,可以看到会延长到10年

因篇幅问题不能全部显示,请点此查看更多更全内容