8080 端口與 6443 端口
Kubernets API Server進程提供Kubernetes API。通常情況下,有一個進程運行在單一kubernetes-master節點上。
默認情況,Kubernetes API Server提供HTTP的兩個端口:
1.Insecure Port
- HTTP服務
- 默認端口8080,修改標識 --insecure-port,此值默認為0,表示此端口默認是關閉的。如果需要開啟 HTTP 非安全端口模式,可以把 --insecure-port 值設置為8080
- 默認IP是本地主機,修改標識 --insecure-bind-address
- 在HTTP中沒有認證和授權檢查
- 主機訪問受保護
2.Secure Port
- 默認端口6443,修改標識—secure-port
- 默認IP是首個非本地主機的網絡接口,修改標識 --bind-address
- HTTPS服務。設置證書和秘鑰的標識,--tls-cert-file,--tls-private-key-file
- 認證方式,令牌文件或者客戶端證書
- 使用基於策略的授權方式
443 端口
那 443 端口又是什么呢?
443 端口是 default 命名空間下的一個名為 kubernetes 的service 的端口,
$ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 32h
使用 describe 命令查看詳細信息,可以發現這個 kubernetes service 其實就是 API Server 的入口地址,其后端的 endpoint 依然指向的是 API Server 的 Pod IP (也就是 API Server 監聽的地址) 的 6443 端口。主要用於在集群內即 pod 中訪問 apiserver。
$ kubectl describe svc kubernetes Name: kubernetes Namespace: default Labels: component=apiserver provider=kubernetes Annotations: <none> Selector: <none> Type: ClusterIP IP Families: <none> IP: 10.96.0.1 IPs: <none> Port: https 443/TCP TargetPort: 6443/TCP Endpoints: 172.18.0.3:6443 Session Affinity: None Events: <none>
關於這個名為 kubernetes 的 service,可以參考這篇:kube-apiserver 中 apiserver service 的實現 · 田飛雨 (tianfeiyu.com)。