k8s之pod详解

网友投稿 709 2022-11-23

k8s之pod详解

k8s之pod详解

参考书籍:《Kubernetes权威指南第4版从Docker到Kubernetes实践全接触》

文章目录

​​参考书籍:《Kubernetes权威指南第4版从Docker到Kubernetes实践全接触》​​

​​一、Pod概念​​​​二、定义一个Pod​​

​​`2.1. YAML文件tomcat.yaml`​​​​`2.2. 相关解释`​​​​`2.3. 验证`​​

​​三、静态Pod​​

​​`3.1.概念`​​​​`3.2.创建一个静态Pod`​​

​​四、Pod状态​​

一、Pod概念

Pod是k8s的最小单位,里面包含一组容器,其中一个为Pause容器,也称为“根容器”。

Pod里面的多个业务容器共享Pause容器的网络和Volume卷。

Pod是短暂的。

每个Pod都有一个唯一的IP地址,称之为Pod IP。在K8S集群中,一个Pod里的容器与另外主机上的Pod容器能够直接通信

二、定义一个Pod

​​2.1. YAML文件tomcat.yaml​​

apiVersion: v1kind: Podmetadata: name: tomcat labels: name: tomcat namespace: ckaspec: containers: - name: tomcat image: kubeguide/tomcat-app:v1 imagePullPolicy: IfNotPresent resources: requests: memory: "64Mi" cpu: "250m" limits: memory: "128Mi" cpu: "500m" ports: - containerPort: 8080 env: - name: MYSQL_SERVICE_HOST value: 'mysql'

​​2.2. 相关解释​​

apiVersion: v1 #核心APIkind #指明资源类型,此处为Podmetadata #元数据,用于描述当前资源类型。metadata.name #Pod的名称为tomcatmetadata.labels.name #定义该Pod有一个名为name=tomcat的标签metadata.namespace #指定该Pod属于哪个命名空间spec #定义Pod里面的容器组spec.containers #定义容器组containers.name #容器的名字为tomcatcontainers.image #容器使用的镜像为kubeguide/tomcat-app:v1containers.imagePullPolicy #IfNotPresent表示如果本地存在就不去镜像仓库拉取,不存在则拉取containers.resources #定义容器的资源配额resources.requests #定义请求的资源,现只支持CPU和内存,此处申请0.25个CPU和64MiB内存, # 该值必须小于或者等于limits设置的值resources.limits #资源最多申请0.5个CPU和128MiB内存containers.ports #定义端口ports.containerPort #容器应用监听的端口为8080containers.env #往容器注入环境变量,以KV键值对的形式。此处注入了MYSQL_SERVICE_HOST='mysql'的环境变量

kubectl apply -f tomcat.yaml #创建Pod

​​2.3. 验证​​

kubectl get pod --show-labels

kubectl describe pod tomcat

kubectl exec -it tomcat bash #登陆到Pod的第一个容器,由于这里只有一个业务容器,默认就是tomcat容器

kubectl get pod -o wide

三、静态Pod

​​3.1.概念​​

静态Pod是由kubelet进行管理的仅存在于特定Node上的Pod。不能通过API Server进行管理,无法与RC、Deployment或者 DaemonSet进行关联,并且kubelet无法对它们进行健康检查。

静态Pod总是由kubelet创建,并且总在kubelet所在的Node上运行。

kubeadm搭建的K8s集群,静态Pod的默认配置目录为**/etc/kubernetes/manifests/**,kubelet会定期扫描静态Pod的配置目录,根据目录下的yaml启动或者删除Pod。

​​3.2.创建一个静态Pod​​

在/etc/kubernetes/manifests/创建如下yaml文件

apiVersion: v1kind: Podmetadata: name: static-pod labels: name: static-podspec: containers: - name: static-pod image: nginx imagePullPolicy: IfNotPresent ports: - containerPort: 80

直接删除静态Pod的yaml文件即可

四、Pod状态

整个Pod的生命周期中,可以达到以下状态:

Pending:Pod被Kubernetes系统接收(accepted),但是其容器还没有被完全创建。

Running:Pod被调度到某一个Node上,所有的容器都被创建并且至少有一个容器是Running状态。

Succeeded:Pod中所有的容器都以状态0退出并且不会重启。

Failed:Pod中所有的容器都已经退出,但是至少有一个容器退出状态不为0。

CrashLoopBackoff:容器启动失败并且会被不断重试。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:shell字符串处理,解决传入参数有空格的问题
下一篇:Jenkins+SonarQube实现持续CodeReview
相关文章

 发表评论

暂时没有评论,来抢沙发吧~