W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
本文展示如何使用 ?kubectl port-forward
? 連接到在 Kubernetes 集群中 運(yùn)行的 MongoDB 服務(wù)。這種類型的連接對數(shù)據(jù)庫調(diào)試很有用。
要獲知版本信息,請輸入 ?kubectl version
?。
kubectl apply -f https://k8s.io/examples/application/mongodb/mongo-deployment.yaml
成功執(zhí)行的命令的輸出可以證明創(chuàng)建了 Deployment:
deployment.apps/mongo created
查看 pod 狀態(tài),檢查其是否準(zhǔn)備就緒:
kubectl get pods
輸出顯示創(chuàng)建的 pod:
NAME READY STATUS RESTARTS AGE
mongo-75f59d57f4-4nd6q 1/1 Running 0 2m4s
查看 Deployment 狀態(tài):
kubectl get deployment
輸出顯示創(chuàng)建的 Deployment:
NAME READY UP-TO-DATE AVAILABLE AGE
mongo 1/1 1 1 2m21s
該 Deployment 自動管理一個 ReplicaSet。查看該 ReplicaSet 的狀態(tài):
kubectl get replicaset
輸出顯示 ReplicaSet 已被創(chuàng)建:
NAME DESIRED CURRENT READY AGE
mongo-75f59d57f4 1 1 1 3m12s
kubectl apply -f https://k8s.io/examples/application/mongodb/mongo-service.yaml
成功執(zhí)行的命令的輸出可以證明 Service 已經(jīng)被創(chuàng)建:
service/mongo created
檢查所創(chuàng)建的 Service:
kubectl get service mongo
輸出顯示已被創(chuàng)建的 Service:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
mongo ClusterIP 10.96.41.183 <none> 27017/TCP 11s
# 將 mongo-75f59d57f4-4nd6q 改為 Pod 的名稱
kubectl get pod mongo-75f59d57f4-4nd6q --template='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
輸出應(yīng)該顯示對應(yīng) Pod 中 MongoDB 的端口:
27017
27017 是分配給 MongoDB 的互聯(lián)網(wǎng) TCP 端口。
kubectl port-forward
? 允許使用資源名稱 (例如 pod 名稱)來選擇匹配的 pod 來進(jìn)行端口轉(zhuǎn)發(fā)。# 將 mongo-75f59d57f4-4nd6q 改為 Pod 的名稱
kubectl port-forward mongo-75f59d57f4-4nd6q 28015:27017
這相當(dāng)于
kubectl port-forward pods/mongo-75f59d57f4-4nd6q 28015:27017
或者
kubectl port-forward deployment/mongo 28015:27017
或者
kubectl port-forward replicaset/mongo-75f59d57f4 28015:27017
或者
kubectl port-forward service/mongo 28015:27017
以上所有命令都有效。輸出類似于:
Forwarding from 127.0.0.1:28015 -> 27017
Forwarding from [::1]:28015 -> 27017
說明:
?kubectl port-forward
? 不會返回。你需要打開另一個終端來繼續(xù)這個練習(xí)。
mongosh --port 28015
ping
?命令:db.runCommand( { ping: 1 } )
成功的 ping 請求應(yīng)該返回:
{ ok: 1 }
如果你不需要指定特定的本地端口,你可以讓 ?kubectl
?來選擇和分配本地端口, 這樣你就不需要管理本地端口沖突。該命令使用稍微不同的語法:
kubectl port-forward deployment/mongo :27017
?kubectl
?工具會找到一個未被使用的本地端口號(避免使用低段位的端口號, 因為他們可能會被其他應(yīng)用程序使用)。輸出類似于:
Forwarding from 127.0.0.1:63753 -> 27017
Forwarding from [::1]:63753 -> 27017
與本地 28015 端口建立的連接將被轉(zhuǎn)發(fā)到運(yùn)行 MongoDB 服務(wù)器的 Pod 的 27017 端口。 通過此連接,你可以使用本地工作站來調(diào)試在 Pod 中運(yùn)行的數(shù)據(jù)庫。
說明:
?kubectl port-forward
? 僅實現(xiàn)了 TCP 端口 支持。 在 issue 47862 中跟蹤了對 UDP 協(xié)議的支持。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: