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