【问题标题】:Configure AWS publicIP for a Master in Kubernetes为 Kubernetes 中的 Master 配置 AWS publicIP
【发布时间】:2019-03-22 10:16:15
【问题描述】:

我确实使用以下命令创建了一个主集群:

kubeadm init --pod-network-cidr $CALICO_NETWORK

现在它在内部 IP 10.3.8.23:6443 中监听,这没关系,因为我希望 master 使用内部 IP 与节点通信。

现在我想使用公共 IP 访问集群,但出现以下错误:

http:代理错误:x509:证书对 10.96.0.1、10.3.8.23 有效,不适用于 18.230.*.*.

如何为 publicIP 生成额外的证书?

我需要使用公共 IP 才能使用浏览器访问仪表板。

我使用以下方式安装它:https://github.com/kubernetes/dashboard

【问题讨论】:

    标签: kubernetes kubeadm


    【解决方案1】:

    如果您不想重新创建集群,也可以执行此处所述的操作:Invalid x509 certificate for kubernetes master

    对于 K8s 1.7 及更早版本:

    rm /etc/kubernetes/pki/apiserver.*
    kubeadm alpha phase certs selfsign \
      --apiserver-advertise-address=0.0.0.0 \
      --cert-altnames=10.96.0.1 \
      --cert-altnames=10.3.8.23 \
      --cert-altnames=18.230.x.x  # <== Public IP
    docker rm `docker ps -q -f 'name=k8s_kube-apiserver*'`
    systemctl restart kubelet
    

    对于 K8s 1.8 一个更新版本:

    rm /etc/kubernetes/pki/apiserver.*
    kubeadm alpha phase certs all \
      --apiserver-advertise-address=0.0.0.0 \
      --apiserver-cert-extra-sans=10.96.0.1,10.3.8.23,18.230.x.x # <== Public IP
    docker rm -f `docker ps -q -f 'name=k8s_kube-apiserver*'`
    systemctl restart kubelet
    

    您还可以使用 --apiserver-cert-extra-sans 选项添加 DNS 名称。

    【讨论】:

      【解决方案2】:

      如果您想使用公共 IP 访问您的集群,您可以使用 kubeadm init 命令传递 IP。喜欢:

      kubeadm init --apiserver-cert-extra-sans=private-ip,public-ip \
        --pod-network-cidr $CALICO_NETWORK \
        --apiserver-advertise-address=private-ip
      

      【讨论】:

      • 如果我这样做,这将重新启动我的集群并断开所有节点,有没有办法在不重置主节点的情况下做到这一点?
      猜你喜欢
      • 2023-03-30
      • 2018-08-29
      • 2016-02-22
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      • 1970-01-01
      • 2017-02-05
      • 2017-07-01
      相关资源
      最近更新 更多