持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第24天,点击查看活动详情
k8s中的pod
前文
本文内容主要是关于k8s中的pod的相关知识的总结及整理,内容部分存在主观的认知及不完整全面之处。
什么是pod
pod是k8s中的一个资源的概念,是我们在k8s中能够创建的最小的部署单元。提到pod,自然很容易联想到docker中容器的概念,但二者之间存在一定的区别。pod主要是用来管理k8s体系中的一组逻辑共同组成的服务,因此pod中理论上是管理了多个容器,容器之间认为是相同的网络环境,同一个pod内不同容器访问直接采用localhost即可进行互相访问。举例来说,也就是当我们把数据库与实际的服务部署在同一个pod中时,可以直接通过localhost进行数据库访问。当然,上述只是举例,不推荐将中间件与实际的业务代码部署在同一个pod中。
pod的应用
简单来看一段pod的创建代码:
# nginx.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
如上所示,这是一个创建nginx作为容器的pod的配置文件。我们将pod的名称定义为nginx,而pod当中仅有一个容器,也就是nginx镜像构建的容器。上述配置文件中并未定义实际的映射端口。当我们需要从外部进行该pod内的nginx调用时,我们需要进行端口暴露,例如将nginx的80端口暴露为pod的8080端口,就需要配置端口的暴露。另外,k8s中的service会对pod进行关联,关联时一般通过标签进行对应pod的查找,则需要在创建pod时,直接指定对应的标签。而在使用时,直接通过标签进行pod的匹配。
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。