follow-me-install-kubernetes-cluster icon indicating copy to clipboard operation
follow-me-install-kubernetes-cluster copied to clipboard

03. 安装和配置 kubectl 疑问

Open darkestinblack opened this issue 5 years ago • 6 comments

文档版本 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的集群不是没有意义了吗?

darkestinblack avatar Feb 14 '20 17:02 darkestinblack

有的。kube-apiserver 集群无状态,也不需要选举,只要有一个活着,集群就能正常工作。这里指向其它节点 apiserver 都会有可用性的问题。

opsnull avatar Feb 15 '20 08:02 opsnull

有的。kube-apiserver 集群无状态,也不需要选举,只要有一个活着,集群就能正常工作。这里指向其它节点 apiserver 都会有可用性的问题。

现在所有节点都是指向NODE_IPS[0]:6443,假设NODE_IPS[0]宕机了,那不是剩下的节点都不能工作了? 我觉得就应该选举啊。所有节点都应该是动态的指向当前为Leader的kube-apiserver啊 。 我这样理解没问题把。

darkestinblack avatar Feb 15 '20 09:02 darkestinblack

如果是部署在阿里云等ecs上,那么应该在kubectl和kube-apiserver的通讯之间套一层slb,如果是非云环境,可以整一个keepalived。他现在这个做法只适用于在三台服务器同时做node又做master的特定场景。

i0668 avatar Apr 09 '20 15:04 i0668

同问

shuish0071 avatar Oct 27 '21 02:10 shuish0071

我试了一下,当 NODE_IPS[0] 挂掉的时候,其他节点执行 kubectl 命令会没有响应,但是下面文件内容中的 ip 改为自身节点ip,则可以使用 kubectl 命令,如 kubectl get nodes 等等

vim /root/.kube/config server: https://10.19.1.100:6443 # 改为自身节点的ip

shuish0071 avatar Oct 27 '21 04:10 shuish0071

仔细读了一遍,发现【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

shuish0071 avatar Oct 27 '21 09:10 shuish0071