Kubernetes 简单应用演示

1.介绍

本例将一个简单的nginx的应用部署在k8s集群中

2.配置流程

创建pod,发布服务,更新版本,回滚pod,删除应用

3.开始创建

3.1 创建

[root@dn01 alltest]# kubectl run nginx1021 --image=nginx:latest --port=80 --replicas=2
kubectl run --generator=deployment/apps.v1beta1 is DEPRECATED and will be removed in a future version. Use kubectl create instead.
deployment.apps/nginx1021 created
[root@dn01 alltest]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx1021-774f9c8c94-fjqd2 0/1 ContainerCreating 0 8s
nginx1021-774f9c8c94-zf9gj 0/1 ContainerCreating 0 8s

查看pods,控制器和副本

[root@dn01 alltest]# kubectl get pods,deployment,replicaset
NAME READY STATUS RESTARTS AGE
pod/nginx1021-774f9c8c94-fjqd2 1/1 Running 0 11m
pod/nginx1021-774f9c8c94-zf9gj 1/1 Running 0 11m

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.extensions/nginx1021 2 2 2 2 11m

NAME DESIRED CURRENT READY AGE
replicaset.extensions/nginx1021-774f9c8c94 2 2 2 11m

3.2发布应用服务

[root@dn01 alltest]# kubectl expose deployment nginx1021 --port=80 --target-port=80 --name=nginx1021-service --type=NodePort
service/nginx1021-service exposed
[root@dn01 alltest]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 36d
nginx1021-service NodePort 10.0.0.12 <none> 80:31026/TCP 10s

查看服务关联的ip

[root@dn01 alltest]# kubectl get endpoints
NAME ENDPOINTS AGE
nginx1021-service 172.17.14.2:80,172.17.46.5:80 11m
[root@dn01 alltest]#

查看pod详细信息

[root@dn01 alltest]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
nginx1021-774f9c8c94-fjqd2 1/1 Running 0 41m 172.17.14.2 10.10.100.32 <none>
nginx1021-774f9c8c94-zf9gj 1/1 Running 0 41m 172.17.46.5 10.10.100.31 <none>
[root@dn01 alltest]#

 

 通过ipvsadm在nodes节点上查看负载均衡情况

查看pod日志

[root@dn01 alltest]# kubectl logs nginx1021-774f9c8c94-fjqd2
[root@dn01 alltest]# kubectl logs nginx1021-774f9c8c94-zf9gj
172.17.46.1 - - [21/Oct/2019:16:28:34 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36" "-"
172.17.46.1 - - [21/Oct/2019:16:28:34 +0000] "GET /favicon.ico HTTP/1.1" 404 555 "http://10.10.100.31:31026/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36" "-"
2019/10/21 16:28:34 [error] 6#6: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 172.17.46.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "10.10.100.31:31026", referrer: "http://10.10.100.31:31026/"
[root@dn01 alltest]#

说明访问的是第二个pod

在node节点上通过ipvsadm命令查看负债情况

[root@dn02 ~]# ipvsadm -L -n

3.3更新应用

通过浏览器访问应用页面的头信息,查看当前版本

更新pod使用的镜像

[root@dn01 ~]# kubectl set image deployment/nginx1021 nginx1021=nginx:1.14
deployment.extensions/nginx1021 image updated

查看更新情况

[root@dn01 ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
nginx1021-6d886746bf-v2ckp 1/1 Running 0 11s 172.17.14.5 10.10.100.32 <none>
nginx1021-6d886746bf-v6r88 1/1 Running 0 20s 172.17.14.6 10.10.100.32 <none>
nginx1021-774f9c8c94-fjqd2 0/1 Terminating 1 18h 172.17.14.5 10.10.100.32 <none>

逐一替换新的镜像

[root@dn01 ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
nginx1021-6d886746bf-v2ckp 1/1 Running 0 17s 172.17.14.5 10.10.100.32 <none>
nginx1021-6d886746bf-v6r88 1/1 Running 0 26s 172.17.14.6 10.10.100.32 <none>
[root@dn01 ~]#

 

再次通过浏览器访问页面,查看请求头信息

此时可以看到nginx的版本变成了1.14.2

3.4 将更新的应用回滚到之前的版本

查看可以回滚的历史版本

[root@dn01 ~]# kubectl rollout history deployment/nginx1021
deployment.extensions/nginx1021
REVISION CHANGE-CAUSE
1 <none>
2 <none>

[root@dn01 ~]#

执行回滚

[root@dn01 ~]# kubectl rollout undo deployment/nginx1021
deployment.extensions/nginx1021

[root@dn01 ~]# kubectl rollout status deployment/nginx1021
deployment "nginx1021" successfully rolled out
[root@dn01 ~]#

[root@dn01 ~]# kubectl rollout history deployment/nginx1021
deployment.extensions/nginx1021 
REVISION CHANGE-CAUSE
2 <none>
3 <none>

浏览器访问确认版本是否变更

 回滚成功

3.5删除应用

删除应用时,不能直接删除pod,pod由控制器控制,删除pod后控制器会自动再生成pod,因此在删除应用时,通过删除控制器删除

执行删除deployment

[root@dn01 ~]# kubectl delete deployment/nginx1021
deployment.extensions "nginx1021" deleted
[root@dn01 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx1021-774f9c8c94-8mhbf 0/1 Terminating 0 12m  ##已经删掉了一个
[root@dn01 ~]#

执行删除service

[root@dn01 ~]# kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 36d
nginx1021-service NodePort 10.0.0.12 <none> 80:31026/TCP 18h
[root@dn01 ~]# kubectl delete svc/nginx1021-service
service "nginx1021-service" deleted

 

posted @ 2019-10-22 13:30  彦祚  阅读(317)  评论(0编辑  收藏  举报