K8S 入门到实战--部署应用到 K8S( 二 )

开头两行的 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 。




推荐阅读