在不同的 IP 上设置 Kubernetes master

Setting up a Kubernetes master on a different IP

我正在尝试在分配给默认接口的 IP 以外的 IP 上设置 Kubernetes 主机。这些是我对 kubeadm-config.yml 所做的更改:

---
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
controlPlaneEndpoint: x.x.x.x
apiServer:
  extraArgs:
    advertise-address: x.x.x.x
  certSANs:
    - x.x.x.x
etcd:
  local:
    dataDir: /var/lib/etcd
    extraArgs:
      advertise-client-urls: https://x.x.x.x:2379
      initial-advertise-peer-urls: https://x.x.x.x:2380
      initial-cluster: my-hostname=https://x.x.x.x:2380
      listen-client-urls: https://127.0.0.1:2379,https://x.x.x.x:2379
      listen-peer-urls: https://x.x.x.x:2380
      initial-cluster-state: new
    serverCertSANs:
      - x.x.x.x
    peerCertSANs:
      - x.x.x.x

其中 x.x.x.x 是非默认 IP。 除了 api-server 的 liveness 探测器外,一切似乎都设置正确。在 /etc/kubernetes/manifests/kube-apiserver.yaml 我仍然看到

livenessProbe:
  failureThreshold: 8
  httpGet:
    host: y.y.y.y
    path: /healthz
    port: 6443
    scheme: HTTPS

其中 y.y.y.y 是旧 IP。

有谁知道我需要在我的 kubeadm-config.yml 中添加什么密钥才能设置正确?

山姆

重现您的配置,我发现 kubeadm-configInitConfiguration 部分是必需的。

以下 kubeadm-config.yaml 部分应该指示 kubeadm 根据您的需要配置 kube-apiserver

---
kind: InitConfiguration
apiVersion: kubeadm.k8s.io/v1beta2
localAPIEndpoint:
  advertiseAddress: "x.x.x.x"
  bindPort: 6443

# the next section is optional, but could be useful also
nodeRegistration:
  kubeletExtraArgs:
    cgroup-driver: "systemd"

有关完整的详细信息,请阅读相关的 GoDoc 页面: