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