簡介
本文檔介紹了如何通過公網訪問云容器引擎集群。通過正確配置 Kubernetes API Server 和 Ingress 控制器,您可以安全地從公網訪問集群資源。
綁定EIP
登錄云容器引擎控制臺,單擊集群名稱進入集群。
在集群信息頁中,點擊連接信息,點擊公網訪問,若未綁定eip,點擊綁定eip,若未創建eip,則需先創建eip。
綁定完eip后。
在集群信息頁中,點擊連接信息。
點擊公網訪問,復制kubeconfig文件內容,將該內容復制到$HOME/.kube/config文件下:
配置 API Server
修改 API Server 配置
編輯 Kubernetes API Server 配置文件,通常位于 /etc/kubernetes/manifests/kube-apiserver.yaml。在 command 部分添加以下參數:
- --advertise-address=<PUBLIC_IP>
- --external-hostname=<PUBLIC_DNS>替換 <PUBLIC_IP> 為您的公網 IP 地址,替換 <PUBLIC_DNS> 為您的公網 DNS 名稱。
重啟 API Server
應用配置更改后,Kubelet 會自動重新啟動 API Server。您可以通過以下命令檢查 API Server 是否正常運行:
kubectl get pods -n kube-system確保 kube-apiserver Pod 處于 Running 狀態。
配置防火墻規則
確保防火墻允許以下端口的入站流量:
6443:Kubernetes API Server
80:HTTP
443:HTTPS
具體的防火墻配置取決于您的云提供商。例如,在 AWS 上,可以通過以下步驟配置安全組:
登錄到 AWS 控制臺。
導航到 EC2 服務。
選擇實例并找到相關的安全組。
編輯安全組的入站規則,添加允許 6443、80 和 443 端口的規則。
配置 Ingress 控制器
安裝 Ingress 控制器
如果您尚未安裝 Ingress 控制器,可以使用以下命令安裝 NGINX Ingress Controller:
kubectl apply -f //raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yaml配置 Ingress 資源
創建一個 Ingress 資源來公開您的服務。示例 Ingress 配置如下:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
namespace: default
spec:
rules:
- host: <PUBLIC_DNS>
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: example-service
port:
number: 80替換 <PUBLIC_DNS> 為您的公網 DNS 名稱,example-service 為您的服務名稱。
應用 Ingress 配置:
kubectl apply -f example-ingress.yaml配置 DNS
將您的公網 DNS 名稱指向 Ingress 控制器的外部 IP 地址。可以在您的域名注冊商處配置 DNS 記錄。例如:
類型:A
名稱:<PUBLIC_DNS>
值:Ingress 控制器的外部 IP 地址
驗證連接
配置完成后,您可以通過公網訪問您的 Kubernetes 集群和服務。例如,在瀏覽器中訪問:
//<PUBLIC_DNS>
安全注意事項
認證和授權:確保 API Server 啟用了適當的認證和授權機制。
網絡安全:使用 HTTPS 加密流量,確保數據傳輸的安全性。
防火墻:僅開放必要的端口,并限制訪問來源 IP。
審計日志:啟用審計日志,監控和記錄訪問行為。
常見問題
無法訪問 API Server
檢查防火墻規則是否正確配置。
確認 API Server 配置中的公網 IP 和 DNS 名稱正確無誤。
檢查 API Server 日志以獲取詳細錯誤信息。
無法訪問 Ingress 控制器
確認 Ingress 控制器 Pod 處于運行狀態。
確認 Ingress 資源配置正確,DNS 名稱指向正確的 IP 地址。