前一章介紹如何建立,刪除pod之後,就要來談談如何對pod本身進行互動了。
當我們建立完有應用程式的pod,會需要跟pod內的應用程式進行互動。
但是在沒有特別設定的情況下,是沒辦法直接跟pod內應用程式交流的。
要跟pod內的應用程式交流,有兩種辦法,一個是利用port-forward,一個是用service。
service的部分會留到下一章說明,這邊先說明用port-forward跟pod溝通。
在上一章我們使用image建立了一個pod,不過用這種方式沒辦法詳細設定pod的內容。
因此這邊會講解如何用寫好的yaml來建立pod(之後的service Deployment等等也會用這種方式建立)
# redis.yaml
apiVersion: v1
kind: Pod
metadata:
name: redis
spec:
containers:
- name: redis
image: redis
首先將上面yaml內容複製起來,在本機開個檔案叫redis_example.yaml,並將內容貼上。
上面可以看到
要透過yaml建立pod,需要在yaml檔的目錄執行下面指令
kubectl create -f redis_example.yaml
這樣他就會建立出你yaml檔所設定的pod了,這時用get pod就可以看到下圖。
要測看看有沒有正常,則可以使用exec指令
kubectl exec -ti redis bash
指定要對redis這個pod操作,進去之後就可以用redis-cli來確認是否有正常運作
儘管可以透過上面這種方式跟pod內的應用程式互動,但是這並不算從外部跟pod互動,因此接下來會開始介紹port-forward
port-forward這個指令能夠將本機的port去mapping到pod上的port,藉以從外部去呼叫pod內的應用程式。
指令如下
kubectl port-forward redis 7788:6379
(從官網抓下來的redis imgae預設幫你開好了6379)
這時在本機用redis-cli去連接7788port,就可以連入pod內,像下圖那樣:
可以看到第一次連接7788 port是無法連通的,但是在port-forward之後,就可以連入pod。
也可以取得前面測試時set的key。
在這章說明完如何透過port-forward去跟pod互動,下一章則會開始介紹另一種跟pod互動的方式,也就是service。