Kubernetes Pod的资源浅析(一)

本文深入剖析Kubernetes中Pod的特性和管理命令,包括创建、查看、编辑、删除Pod,以及Pod的生命周期、重启策略、健康检查和镜像拉取策略等关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Pod的资源浅析(一)

Pod

  • K8s核心资源,用于运行容器
  • 简称:po
  • 一个Pod可以运行多个容器
  • Pod中的容器可以共享网络和存储

这是关于k8s中pod资源的一些相关的属性设定

Pod的常用命令

  • 查看Pod的yaml文件的书写方式
    命令:kubectl explain pods.spec
  • 创建一个Pod
    命令:
    1.kubectl create -f nginx_pod.yml
    2.kubectl apply-f nginx_pod.yml(如已存在Pod,则修改)
    nginx_pod.yml
	apiVersion: v1
	kind: Pod
	metadata:
	  name: nginx
	  labels:
	    name: nginx
	spec:
	  containers:
	  - name: nginx
	    image: nginx
	    ports:
	    - containerPort: 80
	      hostPort: 80
  • 获取Pod列表
    命令:kubectl get pod
	NAME    READY   STATUS              RESTARTS   AGE
	nginx   0/1     ContainerCreating   0          4m18s
  • 获取Pod信息,以yaml格式显示
    命令:kubectl get pod -o yaml
	apiVersion: v1
	items:
	- apiVersion: v1
	  kind: Pod
	  metadata:
	    creationTimestamp: "2020-05-08T02:46:49Z"
	    labels:
	      name: nginx
	    name: nginx
    ......
  • 获取Pod详细状态信息
    命令:kubectl describe pod nginx
    命令注解:
    nginx:pod名
		Name:         nginx
		Namespace:    default
		Priority:     0
		Node:         oss-centos76-1/172.28.87.106
		Start Time:   Fri, 08 May 2020 10:46:49 +0800
		Labels:       name=nginx
		Annotations:  <none>
		Status:       Running
		IP:           10.244.1.24
		IPs:
		  IP:  10.244.1.24
    ......
  • 修改Pod中的相关信息
    命令:kubectl edit pod nginx
  • 删除一个Pod
    命令:kubectl delete pod nginx
  • 通过标签(labels)筛选Pod
    命令:kubectl get pod -l name=nginx
    命令注解:
    name=nginx:标签
	NAME    READY   STATUS    RESTARTS   AGE
	nginx   1/1     Running   0          3m6s
  • 给pod打标签(labels)
    命令:kubectl label pod nginx env=dev

  • 删除pod标签(labels)
    命令:kubectl label pod nginx env-

  • 给Pod添加注解(annotate)
    命令:kubectl annotate pod nginx dev=dev

  • 删除Pod注解(annotate)
    命令:kubectl annotate pod nginx dev-

  • 进入Pod内部
    命令:kubectl exec -it nginx /bin/bash

  • 查看Pod日志
    命令:kubectl logs nginx

  • 从Pod中拷贝文件
    命令:kubectl cp default/nginx:/etc/nginx/nginx.conf ./my.conf
    命令注解:
    default:命名空间(namespace)
    nginx:Pod名
    /etc/nginx/nginx.conf:拷贝文件的源地址
    ./my.conf:拷贝文件目标地址

  • 从本机拷贝文件到Pod中
    命令:kubectl cp ./my.conf default/nginx:/etc/nginx/nginx.conf

Pod生命周期

在这里插入图片描述

Pod重启策略

  • Pod的重启策略RestartPolicy可能的值为Always、OnFailure和Never,默认为Always
    Always:当容器失效时,有kubelet自动重启
    OnFailure:当容器终止运行且退出码不为0时,由kubelet自动启动
    Never:不论容器运行状态如何都不会重启
    设定方式:
	apiVersion: v1
	kind: Pod
	metadata:
	  name: busybox
	  labels:
	    name: busybos
	spec:
	  restartPolicy: Always
	  containers:
	  - name: busybox
	    image: busybox

当运行上述Pod时,Pod会无限重启

Pod健康检查

健康检查的方式可以配置为以下的三种实现方式:

  • ExecAction:在容器内执行指定命令。如果命令退出时返回码为0则表示容器健康
  • TCPSocketAction:对指定端口上的容器的IP地址进行TCP检查。如果能够建立连接,则表明容器健康。
  • HTTPGetAction:对指定的端口和路径上的容器的IP地址执行HTTP Get请求。如果响应的状态码大于等于200且小于等于400则表明容器健康

其他参数:
initialDelaySeconds:首次检查等待时间
timeoutSeconds:命令运行超时时间
periodSeconds:检查间隔时间
failureThreshold:最大失败次数
successThreshold:失败后测试成功的最小连接成功次数

LivenessProbe:存活性检查
  • 设置exec探针yaml文件示例
	    livenessProbe:
	      exec:
	        command:
	        - cat
	        - /tmp/health
	      initialDelaySeconds: 15
	      timeoutSeconds: 1
  • 设置TCP探针yaml文件示例
    livenessProbe:
      tcpSocket:
        port: 80
      initialDelaySeconds: 30
      timeoutSeconds: 1
  • 设置TCP探针yaml文件示例
    livenessProbe:
      httpGet:
        path: /_status/healthz
        port: 80
      initialDelaySeconds: 30
      timeoutSeconds: 1
ReadnessProbe:就绪性检查
  • 设置exec探针yaml文件示例
	    readinessProbe:
	      exec:
	        command:
	        - cat
	        - /tmp/health
	      initialDelaySeconds: 15
	      timeoutSeconds: 1
  • 设置TCP探针yaml文件示例
    readinessProbe:
      tcpSocket:
        port: 80
      initialDelaySeconds: 30
      timeoutSeconds: 1
  • 设置TCP探针yaml文件示例
    readinessProbe:
      httpGet:
        path: /_status/healthz
        port: 80
      initialDelaySeconds: 30
      timeoutSeconds: 1

镜像拉取策略(imagePullPolicy)

每次启动时检查和更新(从registery)images的策略
Always:每次都检查
Nerver:每次都不检查(不管本地是否存在)
IfNotPresent:如果本地存在则不检查,如果没有就拉取
使用示例:

spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80
      hostPort: 80
    imagePullPolicy: Always

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值