我將一個 mysql pod 部署到我的 k8s。這是配置,我對端口感到困惑,就像這樣:kind: Deployment... containers: - ports: - containerPort: 3306 # @1---apiVersion: v1kind: Service metadata: name: mysql labels: app: mysqlspec: selector: app: mysql # way 1 ports: - port: 3306 # @2 targetPort: 3306 # @3 # way 2 type: NodePort ports: - port: 3306 targetPort: 3306 nodePort: 30600@問題1。誰代理這個端口@question2。這個端口是什么?我的意思是容器暴露了 3306 端口,服務(wù)也暴露了。在我的單節(jié)點中,這些不會沖突嗎?@問題3。這個端口是指容器暴露的端口?問題 4:當(dāng)我用方式 1 部署它時。如何從 pods 和我的 localMachine 訪問我的 mysql 服務(wù)器。問題 5:當(dāng)我使用方式 2 部署它時,如何從 pods 和我的 localMachine 訪問我的 mysql 服務(wù)器。
1 回答

慕桂英546537
TA貢獻(xiàn)1848條經(jīng)驗 獲得超10個贊
Pod 監(jiān)聽端口,Service 代理端口。
Pod 監(jiān)聽 3306 端口,Service 只代理 3306 端口到 Pod。服務(wù)不監(jiān)聽端口,它只是一個簡單的 iptables 規(guī)則。
當(dāng)您創(chuàng)建默認(rèn)的 ClusterIP 服務(wù)時,您可以通過主機(jī)名“mysql”從 pod 訪問您的數(shù)據(jù)庫。從 Kubernetes 外部你無法訪問數(shù)據(jù)庫,除非你執(zhí)行“kubectl port-forward”。
當(dāng)您創(chuàng)建 NodePort 服務(wù)時,您仍然可以通過主機(jī)名“mysql”從 pod 訪問您的數(shù)據(jù)庫,但您也可以使用任何節(jié)點 IP + nodePort 訪問數(shù)據(jù)庫。因此,如果您的節(jié)點地址為 192.168.1.10 并且您的節(jié)點端口為 30600,那么您必須將 DB 連接到 192.168.1.10:30600。
- 1 回答
- 0 關(guān)注
- 382 瀏覽
添加回答
舉報
0/150
提交
取消