前一篇我們只做到把 Pod 建立起來,但如果要讓 Pod 之間可以互相溝通,或讓人從外部跟存取叢集,還需要建立 Service 物件才行。
儘管每個 Pod 有一個獨立的 IP 位址,但這些都是只是虛擬 IP (virtual IP),如果沒有 Service 物件的協助,我們還是無法從外部來接觸到這些資源。
如果說第一步是建立 deployment 物件,那建立 Service 物件,肯定就是第二步驟了。
<NodeIP>:<NodePort>
建立一個 nginx-deployment
kubectl create deployment nginx-deployment --image nginx
# 輸出結果
# deployment.apps/nginx-deployment created
查看 deployment
kubectl get deployment
# 輸出結果
# NAME READY UP-TO-DATE AVAILABLE AGE
# nginx-deployment 1/1 1 1 72s
替這個 deployment 建立一個 service
kubectl expose deploy nginx-deployment --type=LoadBalancer --port=80 --name=nginx-service
查看 service
kubectl get svc/nginx-service
# 輸出結果
# NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
# nginx-service LoadBalancer 10.15.241.2 107.167.176.121 80:32566/TCP 65s
或用 yaml 的方式來建立 service 物件
kubectl apply -f nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx-deployment
name: nginx-service
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: nginx-deployment