Hello World

一旦你的 Kubernetes 叢集執行並且配置了 kubectl,你就可以通過幾個步驟執行你的第一個應用程式。這可以使用不需要配置檔案的命令式命令來完成。

要執行應用程式,你需要提供部署名稱(bootcamp),容器映像位置(docker.io/jocatalin/kubernetes-bootcamp:v1)和埠(8080

$ kubectl run bootcamp --image=docker.io/jocatalin/kubernetes-bootcamp:v1 --port=8080

確認它適用於:

$ kubectl get deployments
NAME                  DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
bootcamp               1         1         1            1         6s

要公開你的應用程式並使其可以從外部執行訪問:

$ kubectl expose deployment/bootcamp --type="LoadBalancer" --port 8080

確認它適用於:

$ kubectl get services
NAME                  CLUSTER-IP   EXTERNAL-IP         PORT(S)    AGE
kubernetes            10.0.0.1     <none>              443/TCP    3m
bootcamp              10.3.245.61  104.155.111.170     8080:32452/TCP   2m

要訪問服務,請使用外部 IP 和應用程式埠,例如:

$ export EXTERNAL_IP=$(kubectl get service bootcamp --output=jsonpath='{.status.loadBalancer.ingress[0].ip}')
$ export PORT=$(kubectl get services --output=jsonpath='{.items[0].spec.ports[0].port}')
$ curl "$EXTERNAL_IP:$PORT"
Hello Kubernetes bootcamp! | Running on: bootcamp-390780338-2fhnk | v=1

可以使用以下提供的資料手動完成相同的操作:

$ kubectl describe service bootcamp
Name:                   bootcamp
Namespace:              default
Labels:                 run=bootcamp
Selector:               run=bootcamp
Type:                   LoadBalancer
IP:                     10.3.245.61
LoadBalancer Ingress:   104.155.111.170
Port:                   <unset> 8080/TCP
NodePort:               <unset> 32452/TCP
Endpoints:              10.0.0.3:8080
... events and details left out ....

$ export NODE=104.155.111.170
$ export PORT=8080

一旦這樣做,你可以擴充套件你的應用程式:

$ kubectl scale deployments/bootcamp --replicas=4

並檢查結果:

$ kubectl get deployments
NAME                  DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
bootcamp               4         4         4            4         30s

$ curl "$EXTERNAL_IP:$PORT"
Hello Kubernetes bootcamp! | Running on: bootcamp-390780338-2fhnk | v=1
$ curl "$EXTERNAL_IP:$PORT"
Hello Kubernetes bootcamp! | Running on: bootcamp-390780338-gmtv5 | v=1

注意不斷變化的 pod id。

為了推出新的應用程式版本執行:

kubectl set image deployments/bootcamp bootcamp=jocatalin/kubernetes-bootcamp:v2

並確認:

$ curl "$EXTERNAL_IP:$PORT"
Hello Kubernetes bootcamp! | Running on: bootcamp-284539476-gafwev3 | v=2

清理最終完成:

$ kubectl delete deployment bootcamp
$ kubectl delete service bootcamp