微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

公开带有附加IP地址的kube-apiserver

如何解决公开带有附加IP地址的kube-apiserver

我在裸机集群上使用kubeadm init设置了一个k8s集群。

我注意到kube-apiserver正在专用IP上公开其接口:

# kubectl get pods kube-apiserver-cluster1 -n kube-system -o wide
NAME                                        READY   STATUS    RESTARTS   AGE     IP           NODE                         NOMINATED NODE   READInesS GATES
kube-apiserver-cluster1                     1/1     Running   0          6d22h   10.11.1.99   cluster1   <none>           <none>

这是集群内部的kube配置:

# kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://10.11.1.99:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED

这对于在群集上本地使用kubectl很好,但是我想添加一个附加接口以使用公共IP地址公开kube-apiserver。最终,我试图从便携式计算机配置kubectl来远程访问群集。

如何在外部IP地址上公开kube-apiserver

解决方法

执行以下命令:

$ kubeadm init --pod-network-cidr=<ip-range> --apiserver-advertise-address=0.0.0.0 --apiserver-cert-extra-sans=<PRIVATE_IP>[,<PUBLIC_IP>,...]

如果您从远程使用kubectl,请不要忘记将专用IP替换为.kube/config中的公用IP。

您还可以将主节点的私有IP转发到工作节点上的主节点的公共IP。在运行kubeadm join之前,在工作程序节点上运行以下命令:
$ sudo iptables -t nat -A OUTPUT -d <Private IP of master node> -j DNAT --to-destination <Public IP of master node>。 但是请记住,您还必须以相同的方式在主节点上转发工作人员专用IP,以确保一切正常工作(如果它们遭受云提供商NAT覆盖的同一问题)。

查看更多:apiserver-ipkube-apiserver

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。