Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向Kubernetes集群添加主节点:集群不';没有一个稳定的端点地址_Kubernetes_Kubeadm - Fatal编程技术网

向Kubernetes集群添加主节点:集群不';没有一个稳定的端点地址

向Kubernetes集群添加主节点:集群不';没有一个稳定的端点地址,kubernetes,kubeadm,Kubernetes,Kubeadm,如何向现有Kubernetes 1.14集群的控制平面添加第二个主节点? 显然,假设两个主节点(在堆叠控制平面和etcd节点中)同时创建。我不久前已经用创建了我的第一个master,因此我没有本文档中提到的kubeadm config.yaml 我尝试了以下方法: kubeadm join ... --token ... --discovery-token-ca-cert-hash ... \ --experimental-control-plane --certificate-key ..

如何向现有Kubernetes 1.14集群的控制平面添加第二个主节点? 显然,假设两个主节点(在堆叠控制平面和etcd节点中)同时创建。我不久前已经用创建了我的第一个master,因此我没有本文档中提到的
kubeadm config.yaml

我尝试了以下方法:

kubeadm join ... --token ... --discovery-token-ca-cert-hash ... \
  --experimental-control-plane --certificate-key ...
部分
kubeadm连接--代币--discovery token ca cert hash…
是在第一台主机上运行
kubeadm token create--print join命令时建议使用的命令;它通常用于添加另一个工人<代码>--实验控制平面
用于添加另一个主控面。
--certificate key…
中的密钥建议在第一台主机上运行

我收到以下错误:

[preflight] Running pre-flight checks
[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. 
The recommended driver is "systemd". Please follow the guide at 
https://kubernetes.io/docs/setup/cri/
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
error execution phase preflight: 
One or more conditions for hosting a new control plane instance is not satisfied.

unable to add a new control plane instance a cluster that doesn't have a stable
controlPlaneEndpoint address

Please ensure that:
* The cluster has a stable controlPlaneEndpoint address.
* The certificates that must be shared among control plane instances are provided.

我的集群没有稳定的
controlPlaneEndpoint
地址意味着什么?这是否与当前为空字符串的
kubectl-n kube system get configmap kubeadm config-o yaml
输出中的
controlPlaneEndpoint
有关?如何克服这种情况?

您需要从现有主机复制证书(etcd/api server/ca等),并放置在第二个主机上。 然后运行kubeadminit脚本。由于证书已存在,因此跳过证书创建步骤,并恢复其余群集初始化步骤。

根据:

  • 在云环境中,您应该将控制平面节点放置在TCP转发负载平衡器后面。此负载平衡器分配 到其目标列表中所有正常控制平面节点的通信量。这个 apiserver的运行状况检查是对端口的TCP检查
    kube apiserver侦听(默认值
    :6443
  • 负载平衡器必须能够与apiserver端口上的所有控制平面节点通信。它还必须允许传入流量 在其侦听端口上
  • 确保负载平衡器的地址正确 始终匹配kubeadm的
    ControlPlaneEndpoint
要设置
ControlPlaneEndpoint
config,应使用带有
--config
标志的
kubeadm
。查看配置文件示例:

apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
kubernetesVersion: stable
controlPlaneEndpoint: "LOAD_BALANCER_DNS:LOAD_BALANCER_PORT"
Kubeadm配置文件示例分散在许多文档部分。我建议您阅读GoDoc,其中包含多个kubeadm配置类型使用的YAML文件的完整填充示例


如果您正在配置一个自托管的控制平面,请考虑使用以下特性:

[…]关键组件,如API服务器、控制器管理器和 调度器作为通过Kubernetes API配置的守护程序吊舱运行 而不是通过静态文件在kubelet中配置的静态POD


此PR()可能会澄清使用自托管配置的区别。

kubeadm init phase upload certs--实验上传certs和对
--证书密钥的引用不应该考虑这一点吗?IMO将
--实验性上传证书
描述为手动证书分发的一种替代方法。但我没有使用它。这可能是另一种方法。我没有用过,也不能评论。我提出了我所遵循的方法,它成功了。证书位于/etc/kubernetes/pki/未遇到没有稳定ControlPlane端点地址的集群。当您有多个主机时,每个主机将有一个api端点地址。您需要在整个系统中对api服务器端点进行负载平衡masters@PEkambaram复制所有证书后,它不起作用。它会给出一个错误,即证书对MASTER2无效,它只对MASTER1有效(从我们复制的位置)。您知道
kubeadm init--config…
将对我现有集群的控制平面做什么吗?我想通过添加额外的主节点(可以说是“在运行中”,并且在此过程中不丢失现有的控制平面),将现有的非HA集群转变为HA集群。不过,我不知道这是否可行。你找到有效的解决方案了吗?你能解决你的问题吗?我的情况也一样。