K8s基础之-Pod

第一章:什么是Pod

第二章:Pod探针

第一章:什么是Pod

  • Pod可以简单的理解为是一组、一个或多个容器构成,每个Pod还包含一个Pause容器。Pause容器是Pod容器的父进程,它主要负责僵尸进程的回收管理,同时通过Pause容器可以使得一个Pod里面的不同容器共享存储、网络、PID、IPC等,容器之间可以使用localhost:port的方式相互访问,可以使用volume等实现数据共享。根据docker的构造,Pod可被建模为一组具有共享命名空间、卷、IP地址和PORT端口的容器。
    在这里插入图片描述

1.1 创建一个Pod

1、使用这个命令把nginx:1.15.2版本的yaml文件拉取到本地
kubectl run nginx --image=nginx:1.15.2 -oyaml --dry-run > pod.yaml

2、下面是pod.yaml文件的内容
candidate@master01:~/practise$ cat pod.yaml
apiVersion: v1  #apiVersion版本
kind: Pod       #资源的数据类型,deployment ststefulset service
metadata:       #元数据信息
  creationTimestamp: null
  labels:       #标签
    run: nginx  #key=value
  name: nginx   #pod名称
spec:           #定义pod
  containers:   #配置容器的地方
  - image: nginx:1.21.6        #指定容器的镜像
    name: nginx                 #指定容器的名称
    resources: {}
    command: ["sleep","5"]
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

3、创建一个pod
candidate@master01:~/practise$ kubectl create -f pod.yaml
pod/nginx created

4、查看此pod的状态,可以看到status是running,restarts表示的是重启的次数,age表示运行的时间
candidate@master01:~/practise$ kubectl get pod
NAME                            READY   STATUS    RESTARTS      AGE
11-factor-app                   1/1     Running   9 (21m ago)   127d
foo                             1/1     Running   9 (20m ago)   127d
front-end-55455ccf94-pjl2m      1/1     Running   9 (20m ago)   127d
nginx                           1/1     Running   0             66s
presentation-5f64bd874c-68z8p   1/1     Running   9 (20m ago)   127d

5、pod是不能被修改的,只能被删除,两种方式:
kubectl delete -f pod.yaml
kubectl delete pod  nginx

1.2 更改pod的启动命令和参数

  • candidate@master01:~/practise$ kubectl explain pod.spec.containers
apiVersion: v1  #apiVersion版本
kind: Pod       #资源的数据类型,deployment ststefulset service
metadata:       #元数据信息
  creationTimestamp: null
  labels:       #标签
    run: nginx  #key=value
  name: nginx   #pod名称
spec:           #定义pod
  containers:   #配置容器的地方
  - image: nginx:1.21.6        #指定容器的镜像
    name: nginx                 #指定容器的名称
    resources: {}
    command: ["sleep","5"]
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

1.3 pod状态及pod故障排查命令

状态说明
Pending(挂起)Pod 已被 Kubernetes 系统接收,但仍有一个或多个容器未被创建,可以通过kubectl describe 查看处于 Pending Pending(挂起) 状态的原因
Running(运行中)Pod已经被绑定到一个节点上,并且所有的容器都已经被创建,而且至少有一个是运行的状态,或者是正在启动或者重启,使用kubectl logs -f
Succeeded(成功)所有容器执行成功并终止,并且不会再次重启
Failed(成功)所有容器都已终止,并且至少有一个容器以失败的方式终止,也就是说这个容器要么以非零状态退出,要么被系统终止,可以通过 logs 和 describe 查看 Pod 日志和状态
Unknown(成功)通常是由于通信问题造成的无法获得 Pod 的状态
  • Pod处于running状态就一定是可用的么?
  • 答:status需要是running,并且ready 前后都需要是1才行
    在这里插入图片描述

1.4 pod状态及pod故障排查命令

  • 通过 spec.containers[].imagePullPolicy 参数可以指定镜像的拉取策略,目前支持的策略如下:
操作方式说明
Always总是拉取,当镜像 tag 为 latest 时,且 imagePullPolicy 未配置,默认为 Always
Nerver不管是否存在都不会拉取
IfNotPresent镜像不存在时拉取镜像,如果 tag 为非 latest,且 imagePullPolicy 未配置,默认为 IfNotPresent
1、进行测试修改,修改nginx的版本号(当前系统中并不存在),然后kubect delete -f pod.yaml或者kubectl delete pod nginx,再进行启动:kubectl create -f pod.yaml,

2、使用kubectl get pod nginx -o yaml可以看出nginx这个pod对应的yaml文件
spec:
  containers:
  - image: nginx:1.21.7
    imagePullPolicy: IfNotPresent
    name: nginx
    resources: {}
    terminationMessagePath: /dev/termination-log

1.5 pod重启策略

  • 可以使用 spec.restartPolicy 指定容器的重启策略
操作方式说明
Always默认策略,容器失效时,自动重启该容器
OnFailure容器以不为0的状态码终止,自动重启该容器
Never无论何种状态,都不会重启

restartPolicy是pod级别的,不是container级别的:
如上图中,container级别下command参数启动5秒后就结束,查看pod的状态,发现启动一次以后不管是成功还是失败后都不会再次进行启动

spec:           #定义pod
  containers:   #配置容器的地方
  - image: nginx:1.21.7        #指定容器的镜像
    name: nginx                 #指定容器的名称
    resources: {}
    command: {"sleep","10"}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

修改restartPolicy参数为Always之后,再次启动查看状态
能够发现他这个状态是completed然后又变成running说明他是会不停的进行重启的

第二章:Pod探针

2.1、 Pod的三种探针

种类说明
startupProbeKubernetes1.16 新加的探测方式,用于判断容器内的应用程序是否已经启动。如果配置了 startupProbe,就会先禁用其他探测,直到它成功为止。如果探测失败,Kubelet会杀死容器,之后根据重启策略进行理,如果探测成功,或没有配置 startupProbe,则状态为成功,之后就不再探测。
livenessProbe用于探测容器是否在运行,如果探测失败,kubelet 会“杀死”容器并根据重启策略进行相应的处理。如果未指定该探针,将默认为 Success
readinessProbe一般用于探测容器内的程序是否健康,即判断容器是否为就绪(Ready)状态。如果是,则可以处理请求,反之 Endpoints Controller 将从所有的 Service 的 Endpoints中删除此容器所在 Pod 的 IP 地址。如果未指定,将默认为 Success

2.2、 Pod探针的实现方式

实现方式说明
ExecAction在容器内执行一个指定的命令,如果命令返回值为 0,则认为容器健康
TCPSocketAction通过 TCP 连接检查容器指定的端口,如果端口开放,则认为容器健康
HTTPGetAction对指定的 URL 进行 Get 请求,如果状态码在 200~400 之间,则认为容器健康
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
k8sKubernetes基础知识点通俗易懂的解释如下: Kubernetes是一种容器编排平台,用于管理和部署容器化应用程序。它提供了一种简单而强大的方式来自动化应用的调度、扩展和管理,使开发人员和运维人员能够以更高效的方式管理容器化应用。 在学习k8s基础知识之前,建议您具备一定的Linux基础和网络基础知识,并了解一些Dockerk8s相关的概念。例如,您可以先掌握一些关于容器的基本概念,比如什么是容器、容器镜像、容器编排等。此外,您还需要了解一些关于k8s的核心概念,比如Pod、Service、Deployment等。 Kubernetes中的Pod是最小的部署单元,它包含一个或多个容器,并共享存储、网络等资源。Pod可以被创建、启动、停止或调度,以确保容器应用程序的高可用性和弹性。 Service是一种抽象,用于将一组Pod暴露给其他应用程序或用户。它为Pod提供了一个稳定的网络地址,并负责负载均衡请求。 Deployment是一种资源对象,它定义了如何部署应用程序。通过Deployment,您可以指定要运行的Pod数量、容器的镜像、升级策略等。 除此之外,还有许多其他的k8s核心概念和功能,如Namespace、ReplicaSet、StatefulSet等,它们可以帮助您更好地管理和扩展容器化应用程序。 总之,k8s基础知识点涉及到了容器编排、Pod、Service、Deployment等核心概念。通过学习这些知识,您将能够更好地理解和使用Kubernetes平台来管理和部署容器化应用程序。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Prometheus+Grafana(Kubernetes)企业级监控](https://download.csdn.net/download/weixin_26833205/19732967)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [云计算虚拟化:k8s进阶-CRD开发基础](https://blog.csdn.net/dustzhu/article/details/112029190)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [视频教程-通俗易懂的消息中间件ActiveMQ教程(含配套资料)-Docker/K8S](https://blog.csdn.net/weixin_33500227/article/details/106513277)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值