從單機版本來開始學習部署,這邊需要有兩個步驟:
- 建立pod
- 建立deployment並且expose服務
kubectl run --image=nginx nginx-app --port=80 --env="DOMAIN=cluster"
expose deployment的方式,可以指定deployment name以及要expose的port來讓外部存取...
kubectl expose deployment nginx-app --port=80 --name=nginx-http
kubectl get services
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.99.240.1 <none> 443/TCP 1d
nginx-http 10.99.255.30 <none> 80/TCP 1h
此時,可以直接登入該container所掛載的位置,並且透過docker ip來做存取,例如:
curl http://10.99.255.30:80
在本地端(自己建置的K8S集群),由於沒有像Load Balancer的服務,因此需要設定使用主機的IP來對外服務,透過deployment的expose的方式,可以綁定本地的IP讓外部可以存取...
kubectl expose deployment nginx --port=80 --target-port=80 --external-ip=10.240.0.9
其中10.240.0.9會是host主機的IP...
在GKE上,因為GCP上有LoadBalancer的服務,因此可以比較快速的直接調用Load Balancer來對外服務,步驟如下:
kubectl expose deployment nginx-app --type="LoadBalancer"
檢視服務掛載IP後:
kubectl get services
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.99.240.1 <none> 443/TCP 1d
nginx-app 10.99.249.119 130.211.254.181 80/TCP 2m
此時,service已經有外部的IP位置,可以透過外部IP來存取:
curl http://130.211.254.181:80
或是透過reverse ssh將server port與本地端port串通
ssh [email protected] -A -p 22 -L 15984:localhost:5984