iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 3
0
DevOps

不知所云之 KK8s 實務記憶篇系列 第 3

如何從本機連線至 GKE Pod

部署應用程式在 K8s 中,最基本單位是 Pod,Pod 裏頭就是 Container,原則上是 1個 Container 在 pod 裏頭,也可以 2個以上。Pod 邏輯概念圖如下

Pod diagram

Pod 如何連線?

在雲端 K8s 平台 (例如GKE) 上建立 pod 之後,可以透過兩個指令kubectl execkubectl port-forward作為應用服務的遠端連線管道。

雖是都可遠端連線,但這兩個指令略有不同用途~

  • kubectl exec在本機針對遠端的 pod 進行遠端登入、管理用途,如同docker execㄧ樣用法。
  • kubectl port-forward在本機針對遠端的 pod 透過網路層,進行網路第四層轉導至本機上,例如遠端 Redis tcp 6379 可在本機 tcp 6379 進行 redis-cli 連線。

示範 kubectl exec

# 首先建立應用服務 busybox
kubectl apply -f busybox.yaml

# 查看 busybox pod
kubectl get pod
NAME      READY   STATUS    RESTARTS   AGE
busybox   1/1     Running   0          108s

# 遠端連線至 busybox pod,執行應用程式指令 ping
kubectl exec -i --tty busybox -- sh
/ # ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=51 time=1.300 ms
64 bytes from 8.8.8.8: seq=1 ttl=51 time=0.353 ms

示範 kubectl port-forward

# 建立 redis pod 應用程式
kubectl apply -f redis-master.yaml

# 查看 redis pod 應用程式(pod name = redis-master-ID)
kubectl get pod
NAME                            READY   STATUS    RESTARTS   AGE
busybox                         1/1     Running   0          24m
redis-master-57fc67768d-p7dg4   1/1     Running   0          38s

# 建立遠端 pod 網路層連線至本機上
kubectl port-forward redis-master-57fc67768d-p7dg4 6379:6379

# 測試連線
telnet localhost 6379
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

以上,簡單說明應用程式透過 pod 建立後,在沒有開放性的服務存取閘道機制下,如何從本機上進行遠端連線、遠端管理。


上一篇
有哪些 Kubernetes 雲端服務
下一篇
GCP Memorystore 服務介紹
系列文
不知所云之 KK8s 實務記憶篇31

尚未有邦友留言

立即登入留言