如何获得 kubernetes DNS(skydns,现在称为 kube-dns),以便 kube-dns 容器/pod 知道如何使用 IP 地址或主机连接到 API 服务器
我认为 kube-dns 在 Kubernetes 的设计中不需要连接到 APIServer。
但是,如果您正在尝试找到一种稳定的方式来连接到 APIServer(就像您所说的“无论主节点是否关闭并且另一个 API 服务器在具有不同 IP 地址的主机上启动”),您已经这样做了,如果您使用kubeadm
(有关 kubeadm 的更多信息)部署集群。这是通过 Kubernetes 服务实现的。您可以像这样检查:
$ kubelet describe svc kubernetes
Name: kubernetes
Namespace: default
Labels: component=apiserver
provider=kubernetes
Selector: <none>
Type: ClusterIP
IP: 10.96.0.1
Port: https 443/TCP
Endpoints: 10.140.0.2:6443
Session Affinity: ClientIP
No events.
您可以通过 10.96.0.1:443(即 ClusterIP)或 10.140.0.2:6443(即 APIServer pod 的 pod IP 地址)通过以下方式访问 APIServer:
$ curl https://10.140.0.2:6443/version --cert /etc/kubernetes/pki/apiserver.pem --key /etc/kubernetes/pki/apiserver-key.pem --cacert /etc/kubernetes/pki/ca.pem
{
"major": "1",
"minor": "5",
"gitVersion": "v1.5.4",
"gitCommit": "7243c69eb523aa4377bce883e7c0dd76b84709a1",
"gitTreeState": "clean",
"buildDate": "2017-03-07T23:34:32Z",
"goVersion": "go1.7.4",
"compiler": "gc",
"platform": "linux/amd64"
}