【问题标题】:Add a second master node for high availabity in kubernetes在 Kubernetes 中添加第二个主节点以实现高可用性
【发布时间】:2019-11-06 22:41:12
【问题描述】:

我能够按照文档进行操作并建立一个 kubernetes 集群。但我想添加第二个主节点,我在第二个节点上尝试过,但看到错误

[root@kubemaster02 ~]# kubeadm init --apiserver-advertise- 
address=10.122.161.XX --pod-network-cidr=10.244.0.0/16 --kubernetes- 
version=v1.10.0
[init] Using Kubernetes version: v1.10.0
[init] Using Authorization modes: [Node RBAC]
[preflight] Running pre-flight checks.
    [WARNING SystemVerification]: docker version is greater than the most 
recently validated version. Docker version: 18.03.0-ce. Max validated 
version: 17.03
    [WARNING FileExisting-crictl]: crictl not found in system path
Suggestion: go get github.com/kubernetes-incubator/cri-tools/cmd/crictl
[preflight] Some fatal errors occurred:
    [ERROR Port-10250]: Port 10250 is in use
[preflight] If you know what you are doing, you can make a check non-fatal 
with `--ignore-preflight-errors=...`

我的问题是,这是否是通过执行 init 添加第二个主控的正确方法?我的另一个问题是如何判断节点是否配置为主节点,以下命令由于某种原因没有显示角色(可能是旧版本)

[root@master01 ~]# kubectl get nodes -o wide
NAME                   STATUS    AGE       VERSION   EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION
kubemaster01   Ready     215d      v1.8.1    <none>        CentOS Linux 7 (Core)   3.10.0-693.5.2.el7.x86_64
kubemaster02   Ready     132d      v1.8.4    <none>        CentOS Linux 7 (Core)   3.10.0-693.5.2.el7.x86_64
kubenode01     Ready     215d      v1.8.1    <none>        CentOS Linux 7 (Core)   3.10.0-693.5.2.el7.x86_64
kubenode02     Ready     214d      v1.8.1    <none>        CentOS Linux 7 (Core)   3.10.0-693.5.2.el7.x86_64

【问题讨论】:

标签: kubernetes kubectl


【解决方案1】:

在你的情况下,请查看端口 10250 上运行的内容:

netstat -nlp | grep 10250

因为你的错误是:

[ERROR Port-10250]:端口 10250 正在使用中

一般情况下,您可以引导额外的 master,并拥有 2 个 master。在另一个 master 上运行 kubeadm 之前,您需要先从kubemaster01 复制 K8s CA 证书。为此,您有两种选择:

选项 1:使用 scp 复制

scp root@<kubemaster01-ip-address>:/etc/kubernetes/pki/* /etc/kubernetes/pki

选项 2:复制粘贴

复制/etc/kubernetes/pki/ca.crt/etc/kubernetes/pki/ca.key/etc/kubernetes/pki/sa.key/etc/kubernetes/pki/sa.pub的内容并在kubemaster02上手动创建这些文件

The next step is to create a Load Balancer 位于您的主节点前面。你如何做到这一点取决于你的环境;例如,您可以利用云提供商负载均衡器,或使用 NGINX、keepalived 或 HAproxy 自行设置。

对于引导,请使用 config.yaml:

cat >config.yaml <<EOF
apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
api:
  advertiseAddress: <private-ip>
etcd:
  endpoints:
 - https://<your-ectd-ip>:2379
  caFile: /etc/kubernetes/pki/etcd/ca.pem
  certFile: /etc/kubernetes/pki/etcd/client.pem
  keyFile: /etc/kubernetes/pki/etcd/client-key.pem
networking:
  podSubnet: <podCIDR>
apiServerCertSANs:
- <load-balancer-ip>  
apiServerExtraArgs:
  apiserver-count: "2"
EOF

确保替换以下占位符:

  • your-ectd-ip你的 etcd 的 IP 地址
  • private-ip 它与主服务器的私有 IPv4。
  • &lt;podCIDR&gt; 与您的 Pod CIDR
  • load-balancer-ip端点连接你的主人

然后你可以运行命令:

kubeadm init --config=config.yaml

并引导主人。

但如果您真的想要一个 HA 集群,请遵循文档的最低要求,并使用 3 个节点作为主节点。他们为 etcd quorum 创建了这些要求。在每个主节点上,他们运行非常接近主节点的 etcd。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 2017-03-12
    • 1970-01-01
    相关资源
    最近更新 更多