follow-me-install-kubernetes-cluster
follow-me-install-kubernetes-cluster copied to clipboard
03. 安装和配置 kubectl 疑问
文档版本 1.16.6
现象描述 03.kubectl.md
设置集群参数
kubectl config set-cluster kubernetes
--certificate-authority=/opt/k8s/work/ca.pem
--embed-certs=true \
--server=https://${NODE_IPS[0]}:6443 \
--kubeconfig=kubectl.kubeconfig
这里--server 都指向了同一个节点的kube-apiserver, 那做kube-apiserver的集群不是没有意义了吗?
有的。kube-apiserver 集群无状态,也不需要选举,只要有一个活着,集群就能正常工作。这里指向其它节点 apiserver 都会有可用性的问题。
有的。kube-apiserver 集群无状态,也不需要选举,只要有一个活着,集群就能正常工作。这里指向其它节点 apiserver 都会有可用性的问题。
现在所有节点都是指向NODE_IPS[0]:6443,假设NODE_IPS[0]宕机了,那不是剩下的节点都不能工作了? 我觉得就应该选举啊。所有节点都应该是动态的指向当前为Leader的kube-apiserver啊 。 我这样理解没问题把。
如果是部署在阿里云等ecs上,那么应该在kubectl和kube-apiserver的通讯之间套一层slb,如果是非云环境,可以整一个keepalived。他现在这个做法只适用于在三台服务器同时做node又做master的特定场景。
同问
我试了一下,当 NODE_IPS[0] 挂掉的时候,其他节点执行 kubectl 命令会没有响应,但是下面文件内容中的 ip 改为自身节点ip,则可以使用 kubectl 命令,如 kubectl get nodes 等等
vim /root/.kube/config server: https://10.19.1.100:6443 # 改为自身节点的ip
仔细读了一遍,发现【06-2.apiserver高可用.md】中的nginx 代理似乎没有用到,猜测应该是work节点统一将/root/.kube/config 中的server 改成自身 nginx 代理的地址,继而实现后端 apiserver 的负载均衡,试了一下,发现可以执行
kubectl get nodes
这个实现感觉挺巧妙的,大家可以试一下,如有不足欢迎讨论 具体配置如下:
vim /root/.kube/config server: https://127.0.0.1:8443