端口列表
Kubernetes-v1.17.3的组件端口如下
组件 | 端口 | 参数 | 默认值 | 协议 | 必须开启 | 说明 |
---|---|---|---|---|---|---|
kube-apiserver | 安全端口 | --secure-port | 6443 | HTTPS | 是 | - |
kube-apiserver | 非安全端口 | --insecure-port | 8080 | HTTP | 否,0表示关闭 | deprecated |
kubelet | 健康检测端口 | --healthz-port | 10248 | HTTP | 否,0表示关闭 | - |
kube-proxy | 指标端口 | --metrics-port | 10249 | HTTP | 否,0表示关闭 | - |
kubelet | 安全端口 | --port | 10250 | HTTPS | 是 | 认证与授权 |
kube-scheduler | 非安全端口 | --insecure-port | 10251 | HTTP | 否,0表示关闭 | deprecated |
kube-controller-manager | 非安全端口 | --insecure-port | 10252 | HTTP | 否,0表示关闭 | deprecated |
kubelet | 非安全端口 | --read-only-port | 10255 | HTTP | 否,0表示关闭 | - |
kube-proxy | 健康检测端口 | --healthz-port | 10256 | HTTP | 否,0表示关闭 | - |
kube-controller-manager | 安全端口 | --secure-port | 10257 | HTTPS | 否,0表示关闭 | 认证与授权 |
kube-scheduler | 安全端口 | --secure-port | 10259 | HTTPS | 否,0表示关闭 | 认证与授权 |
配置建议
除了四个安全端口以外,其他端口都建议关闭。另外,kube-apiserver、kube-controller-manager、kube-scheduler的非安全端口这个参数在未来的版本中会被废弃掉。
10257与10259端口
这两个端口是controller-manager与scheduler的安全端口。kubeadm安装的集群,kube-controller-manager与kube-scheduler的安全端口对应的监听地址为127.0.0.1,开启这个端口的作用主要是用来检查它们健康状态。比如说,我们执行以下命令来查看k8s组件的状态:
$ kubectl get cs
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health":"true"}
kube-apiserver其实是通过 https://127.0.0.1:10257/healthz
和 https://127.0.0.1:10259/healthz
来判断controller-manager和scheduler的状态。
有时候我们安装了一个N个Master的集群,通过kubectl get cs
命令可以看到多个etcd的健康状态,但是却还是只能看到一个scheduler和controller-manager,如下:
$ kubectl get cs
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health":"true"}
etcd-1 Healthy {"health":"true"}
etcd-2 Healthy {"health":"true"}
这是因为,kube-apiserver只会检查本节点上的10257和10259端口,不会检查其他Master节点的这两个端口。这也是为什么这两个端口只监听127.0.0.1
的原因。