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