开头两行的 apiVersion 和 kind 可以暂时不要关注,就理解为 deployment 的固定写法即可 。
metadata:顾名思义就是定义元数据的地方,告诉 Pod 我们这个 deployment 叫什么名字,这里定义为:k8s-combat
中间的:
metadata:labels:app: k8s-combat
也很容易理解,就是给这个 deployment 打上标签,通常是将这个标签和其他的组件进行关联使用才有意义,不然就只是一个标签而已 。
标签是键值对的格式,key, value 都可以自定义 。而这里的 app: k8s-combat 便是和下面的 spec 下的 selector 选择器匹配,表明都使用 app: k8s-combat 进行关联 。
而 template 中所定义的标签也是为了让选择器和 template 中的定义的 Pod 进行关联 。
Pod 是 k8s 中相同功能容器的分组,一个 Pod 可以绑定多个容器,这里就只有我们应用容器一个了;后续在讲到 istio 和日志采集时便可以看到其他的容器 。template 中定义的内容就很容易理解了,指定了我们的容器拉取地址,以及所占用的资源(cpu/ memory) 。
replicas: 1:表示只部署一个副本,也就是只有一个节点的意思 。
部署应用之后我们使用命令:
kubectl apply -f deployment/deployment.yaml
生产环境中往往会使用云厂商所提供的 k8s 环境,我们本地可以使用 https://minikube.sigs.k8s.io/docs/start/ minikube 来模拟 。就会应用这个 deployment 同时将容器部署到 k8s 中,之后使用:
kubectl get pod
在后台 k8s 会根据我们填写的资源选择一个合适的节点,将当前这个 Pod 部署过去 。就会列出我们刚才部署的 Pod:
? kubectl get podNAMEREADYSTATUSRESTARTSAGEk8s-combat-57f794c59b-7k58n1/1Running017h
我们使用命令:kubectl exec -it k8s-combat-57f794c59b-7k58nbash
就会进入我们的容器,这个和使用 docker 类似 。之后执行 curl 命令便可以访问我们的接口了:
root@k8s-combat-57f794c59b-7k58n:/# curl http://127.0.0.1:8081/pingpongroot@k8s-combat-57f794c59b-7k58n:/#
这时候我们再开一个终端执行:? kubectl logs -f k8s-combat-57f794c59b-7k58n2023/09/03 09:28:07 ping
便可以打印容器中的日志,当然前提是应用的日志是写入到了标准输出中 。总结以上就是这一章节的主要内容,重点就是将我们应用程序员打包为 docker 镜像后上传到镜像仓库,再配置好 deployment 由 k8s 进行调度运行 。
相关的源码和 yaml 资源文件都存在这里:
https://github.com/crossoverJie/k8s-combat 。
推荐阅读
- 梦见到处都是水有什么征兆 梦见到处都有水在流是怎么回事
- 张学友:“千万不要跟刘嘉玲打麻将,拍戏赚到的50万大部分都给了刘嘉玲!”
- 女人梦见河水是啥预兆 已婚女人梦到水是什么征兆
- 从160斤瘦到100斤,减肥方法大公开,简单值得收藏学习
- 王志文、靳东都娶不到的她,最后为何会嫁给平平无奇的田小洁?
- 梦见水泥有什么征兆 梦到水泥
- 涂改液沾到手上怎么办 涂改液弄到手上怎么洗
- 白板笔弄到衣服上用什么擦能擦掉 白板笔弄到衣服上能洗掉吗
- 碳素笔油弄到衣服上怎么洗掉 碳素笔油弄衣服上怎么去除
- 梦到鞋什么预兆 梦见鞋有什么预兆