使用额外的 IP 地址公开 kube-apiserver
Expose kube-apiserver with additional IP address
我在裸机集群上使用 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
很好,但我想添加一个额外的接口来使用 public 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,请不要忘记将 .kube/config
中的 public IP 替换为私有 IP。
也可以将master节点的私有IP转发到worker节点上master节点的publicIP。 运行 运行 之前工作节点上的此命令 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-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
很好,但我想添加一个额外的接口来使用 public 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,请不要忘记将 .kube/config
中的 public IP 替换为私有 IP。
也可以将master节点的私有IP转发到worker节点上master节点的publicIP。 运行 运行 之前工作节点上的此命令 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-ip, kube-apiserver.