kubeadm部署k8s v1.18.x HA模式
kubeadm部署HA k8s v1.18.x踩坑点
·
背景
原部署了一个master+双worker的集群,后面想升级成HA模式,一开始是用的kubeadm方式部署的,配置使用了很多默认的,因为熟练度的原因,改起来出现了很多的错误,一直没有成功。本文主要用于记录需要注意的点,具体部署方式请看转载的地址。
注意点
1. 初始化集群配置文件
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 192.168.56.29 #本人用的双网卡通信,填写可用于与其他主机通信的主机地址
bindPort: 6443 #实际用于被代理的apiServer访问端口
nodeRegistration:
criSocket: /var/run/dockershim.sock
name: k8smaster1 #节点名称,一般hostname
taints:
- effect: NoSchedule
key: node-role.kubernetes.io/master
---
apiServer:
certSANs: #填写master(29、27)节点地址和vip地址(28)
- k8smaster1
- k8smaster2
- master.k8s.io
- 192.168.56.28
- 192.168.56.29
- 192.168.56.27
- 127.0.0.1
extraArgs:
authorization-mode: Node,RBAC
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controlPlaneEndpoint: "master.k8s.io:16443" #这个是apiServer访问地址,也是HA对外访问的地址
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.19.16 #我升级了一下版本,1.18.x版本也一样的
networking:
dnsDomain: cluster.local
podSubnet: 10.244.0.0/16
serviceSubnet: 10.96.0.0/12
scheduler: {}
2.flannel网络插件
containers:
- args:
- --ip-masq
- --kube-subnet-mgr
- --iface=enp0s8 #使用双网卡的这里加一个配置,填写可用于与其他主机通信的网卡
command:
- /opt/bin/flanneld
3.加入其他master节点
kubeadm join master.k8s.io:16443 --token ckf7bs.30576l0okocepg8b --discovery-token-ca-cert-hash sha256:19afac8b11182f61073e254fb57b9f19ab4d798b70501036fc69ebef46094aba --control-plane --certificate-key 3c3230b89e79d49bef4eb81aaf0e4fa7556ffb79ec783abdb0e537ee852c3242 --apiserver-advertise-address 192.168.56.27 --apiserver-bind-port 6443
双网卡最好加上–apiserver-advertise-address这个参数并指定地址,不然会默认使用第一个网卡的ip来组建etcd
4.etcd集群
$ vi /etc/kubernetes/manifests/etcd.yaml
#这里填写自己其他节点etcd地址,然后保存退出即可
...
- --initial-cluster=k8smaster1=https://192.168.56.29:2380,k8smaster2=https://192.168.56.27:2380
5.负载均衡
负载均衡直接使用nginx代理真实的apiserver地址,然后对外暴露vip的地址即可。
6.提醒
如果更改过certSANs,则需要更新证书以及重启apiserver服务。因为做高可用vip,apiserver访问地址我改过一次,结果集群就不能正常访问了,如果不是用于学习和非常了解k8s集群,还是不要轻易乱改,避免出现我这样的情况。本次作为踩坑教训。
资料:
Certificate-Key的作用
K8S 更新证书,添加master ip 或域名
kubeadm v1.18.0 HA
k8s无法通过svc访问其他节点pod
解决 Kubeadm 添加新 Master 节点到集群出现 ETCD 健康检查失败错误
更多推荐
已为社区贡献1条内容
所有评论(0)