为kubernetes中的高可用性添加第二个主节点

为kubernetes中的高可用性添加第二个主节点,kubernetes,kubectl,Kubernetes,Kubectl,我能够按照文档进行操作,得到一个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.

我能够按照文档进行操作,得到一个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,这是否是添加第二个master的正确方法?我的另一个问题是如何判断节点是否配置为主节点,由于某种原因(可能是旧版本),下面的命令没有显示角色

[root@master01~]#kubectl获取节点-o宽
NAME STATUS AGE VERSION EXTERNAL-IP OS-IMAGE KERNEL-VERSION
kubemaster01 Ready 215d v1.8.1 CentOS Linux 7(核心)3.10.0-693.5.2.el7.x86_64
kubemaster02 Ready 132d v1.8.4 CentOS Linux 7(核心)3.10.0-693.5.2.el7.x8664
kubenode01 Ready 215d v1.8.1 CentOS Linux 7(核心)3.10.0-693.5.2.el7.x86_64
kubenode02 Ready 214d v1.8.1 CentOS Linux 7(核心)3.10.0-693.5.2.el7.x86_64

在您的情况下,请查看端口10250上运行的是什么:

netstat -nlp | grep 10250
因为您的错误是:

[错误端口-10250]:端口10250正在使用中

通常,您可以引导其他主控形状,并且有2个主控形状。在另一台主机上运行kubeadm之前,您需要首先从
kubemaster01
复制K8s CA证书。为此,您有两个选项:

选项1:使用scp复制

scp root@<kubemaster01-ip-address>:/etc/kubernetes/pki/* /etc/kubernetes/pki
确保替换了以下占位符:

  • 您的ectd ip
    您的etcd的ip地址
  • 专用ip
    将其与主服务器的专用IPv4连接
  • 使用您的Pod CIDR
  • 负载平衡器ip
    连接主机的端点
然后可以运行以下命令:

kubeadm init --config=config.yaml
并引导大师们


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

下面是使用
kubeadm
创建HA集群的文档:
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
kubeadm init --config=config.yaml