kubeadm实现k8s高可用集群环境部署与配置 (3)

使用Kuberctl创建docker register认证secret

[root@master01 ~]# kubectl create secret docker-registry myregistrykey --docker-server=https://reg.zhao.com --docker-username=admin --docker-password=Harbor12345 --docker-email="" secret/myregistrykey created [root@master02 ~]# kubectl get secrets NAME TYPE DATA AGE default-token-6mrjd kubernetes.io/service-account-token 3 18h myregistrykey kubernetes.io/dockerconfigjson 1 19s

在创建Pod的时通过imagePullSecret引用myregistrykey

imagePullSecrets: - name: myregistrykey 集群功能测试 测试私有仓库 [root@master02 ~]# cat test_sc.yaml apiVersion: v1 kind: Pod metadata: name: foo spec: containers: - name: foo image: reg.zhao.com/zhao/myapp:v1.0 # imagePullSecrets: # - name: myregistrykey

在这里插入图片描述

在这里插入图片描述

打开注释,应用密钥,可以拉取到镜像

在这里插入图片描述

测试集群高可用 测试master节点高可用

通过ip查看apiserver所在节点,通过leader-elect查看scheduler和controller-manager所在节点

[root@master01 ~]# ip a|grep ens33 [root@master01 ~]# kubectl get endpoints kube-scheduler -n kube-system -o yaml |grep holderIdentity [root@master01 ~]# kubectl get endpoints kube-controller-manager -n kube-system -o yaml |grep holderIdentity

在这里插入图片描述

组件名 所在节点
apiserver   master01  
controller-manager   master01  
scheduler   master01  

关闭master01,模拟宕机,master01状态为NotReady

[root@master01 ~]# init 0

VIP飘到了master02,controller-manager和scheduler也发生了迁移

在这里插入图片描述

组件名 所在节点
apiserver   master02  
controller-manager   master03  
scheduler   master02  
测试node节点高可用

K8S 的pod-eviction在某些场景下如节点 NotReady,资源不足时,会把 pod 驱逐至其它节点

Kube-controller-manager 周期性检查节点状态,每当节点状态为 NotReady,并且超出 pod-eviction-timeout 时间后,就把该节点上的 pod 全部驱逐到其它节点,其中具体驱逐速度还受驱逐速度参数,集群大小等的影响。最常用的 2 个参数如下:
pod-eviction-timeout:NotReady 状态节点超过该时间后,执行驱逐,默认 5 min
node-eviction-rate:驱逐速度,默认为 0.1 pod/秒

创建pod,维持副本数3

[root@master02 ~]# cat myapp_deploy.yaml apiVersion: apps/v1 kind: Deployment metadata: name: myapp-deploy namespace: default spec: replicas: 3 selector: matchLabels: app: myapp release: stabel template: metadata: labels: app: myapp release: stabel env: test spec: containers: - name: myapp image: library/nginx imagePullPolicy: IfNotPresent ports: - name: http containerPort: 80

可以看到pod分布在node01和node02节点上

在这里插入图片描述

关闭node02,模拟宕机,node02状态为NotReady

在这里插入图片描述

可以看到 NotReady 状态节点超过指定时间后,pod被驱逐到 Ready 的节点上,deployment维持运行3个副本

问题 初始化master节点失败

如果初始化失败,可执行kubeadm reset后重新初始化

[root@master01 ~]# kubeadm reset #非root用户还须执行rm -rf $HOME/.kube/config flanne文件下载失败

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxxzw.html