轻量级Kubernetes之k3s:12:部署一个nginx的应用

在搭建的k3s的集群上创建和部署一个nginx应用,来确认一下最基础的动作是否能够完成。
集群环境准备
| hostname | IP | 内存 | 硬盘 | 操作系统 | 用途 |
|---|---|---|---|---|---|
| host121 | 192.168.163.121 | 512MB | 8G | CentOS 7.6 | Master |
| host122 | 192.168.163.122 | 512MB | 5G | CentOS 7.6 | Node |
| host123 | 192.168.163.123 | 512MB | 5G | CentOS 7.6 | Node |
| host124 | 192.168.163.124 | 512MB | 5G | CentOS 7.6 | Node |
-
环境搭建可参看: https://blog.csdn.net/liumiaocn/article/details/103318341
-
搭建完毕的版本和节点确认
[root@host121 ansible]# kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
host121 Ready master 4m48s v1.16.3-k3s.2 192.168.163.121 CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 containerd://1.3.0-k3s.4
host123 Ready 11s v1.16.3-k3s.2 192.168.163.123 CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 containerd://1.3.0-k3s.4
host122 Ready 11s v1.16.3-k3s.2 192.168.163.122 CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 containerd://1.3.0-k3s.4
host124 Ready 11s v1.16.3-k3s.2 192.168.163.124 CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 containerd://1.3.0-k3s.4
[root@host121 ansible]#
使用kubectl run创建一个deployment
- 创建一个deployment
[root@host121 ~]# kubectl run --image=nginx nginx-app --port=80
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/nginx-app created
[root@host121 ~]#
注:由于此处使用的仍是旧的方式,提示此种方式需要用pod的方式替代,只是验证动作,并不影响。
- 确认结果
可以看到已经开始进入到ContainerCreating状态了,如果在各个节点都事前拉取nginx的镜像,速度会明显快一些。
[root@host121 ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-app-69ff7df578-74b2f 0/1 ContainerCreating 0 2m8s host122
[root@host121 ~]#
- 等待状态变成Running
等待知道此pod状态变成Running
[root@host121 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-app-69ff7df578-74b2f 1/1 Running 0 15m
[root@host121 ~]#
使用kubectl exec
通过kubectl get node命令发现此ningx的pod运行所在的节点信息为host122,执行日志如下所示
[root@host121 ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-app-69ff7df578-74b2f 1/1 Running 0 18m 10.42.3.3 host122
[root@host121 ~]#
在实际使用中经常会有需求进入到pod中确认现场状况,可以通过kubectl exec来进入此nginx的pod中
[root@host121 ~]# kubectl exec -it nginx-app-69ff7df578-74b2f sh
# uname -a
Linux nginx-app-69ff7df578-74b2f 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 GNU/Linux
# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
#
可以看到kebectl exec可以成功进入pod内,并可以正常执行普通命令进行确认
expose服务
使用expose命令以NodePort的方式生成服务
[root@host121 ~]# kubectl expose deployment nginx-app --port=80 --type=NodePort --target-port=80 --name=nginx-service
service/nginx-service exposed
[root@host121 ~]#
成功执行之后即可使用kubectl get service 命令来确认结果了
[root@host121 ~]# kubectl get service -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kubernetes ClusterIP 10.43.0.1 443/TCP 50m
nginx-service NodePort 10.43.43.197 80:32456/TCP 25s run=nginx-app
[root@host121 ~]#
服务访问确认
可以看到此服务已经在端口32456暴露出来,结合上面确认的此pod的位置为host122,通过ip和端口即可访问nginx服务了
[root@host121 ~]# curl http://192.168.163.122:32456
Welcome to nginx!
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.
For online documentation and support please refer to
nginx.org.
Commercial support is available at
nginx.com.
Thank you for using nginx.
[root@host121 ~]#
总结
虽然在细节上仍然有一些小问题,比如coredns有时无法处于ready的状态,但是整体来说,pod、deployment、service的创建,以及kubectl exec等常用操作都很顺畅。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
