K8S核心技术之Pod

Pod相关介绍技术属性解释

Posted by LL Blog on February 21, 2022

Pod相关介绍技术属性解释

k8s核心技术——pod

1. pod基本概念和意义

  1. 基本概念
    • 1.最小的部署单元
    • 2.包含多个容器(一组容器的集合)
    • 3.一个pod中容器共享网络命名空间
    • 4.pod是短暂的
    • 5.每个pod都有一个根容器“Pause容器”和一个或多个紧密相关的用户业务容器
  2. Pod存在的意义
    • 1.创建容器使用docker,一个docker 对应一个容器,一个容器一个进程运行一个应用程序
    • 2.Pod是多进程设计,运行多个应用程序
      • 一个Pod有多个容器,一个容器里面运行一个应用程序
    • 3.Pod存在亲密性应用
      • 两个应用之间进行交互
      • 网络之间调用
      • 两个应用需要频繁互相调用

2. Pod的实现机制

  1. 共享网络

    前提:在同一个ns(namespace)下面

    通过Pause容器,把其他业务容器加入到Pause容器里面,让所有业务容器在同一个名称空间(namespace)中,可以实现网络共享。

  2. 共享存储

    引入数据卷概念Volume,使用数据卷进行持久化存储

       
    

3. Pod镜像拉取策略

  • InNotPresent:默认值,镜像在宿主机上不存在时才拉取
  • Always:每次创建Pod都会重新拉取一次镜像
  • Nerver:Pod永远不会主动拉取这个镜像
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: nginx
      image: nginx:1.18
      # 镜像拉取策略为每次创建pod都会重新拉取一次镜像
      imagePullPolicy: Always 

4. Pod资源限制

  • 调度:

    requests:

    ​ memory:”64Mi”

    ​ cpu: “250m”

  • 最大:

    limits:

    ​ memory: “128Mi”

    ​ cpu: “500m”

resources:
  requests:
    memory: "64Mi"
    cpu: "250m"
  limits:
    memory: "128Mi"
    cpu: "500m"

5. Pod重启机制

  • Always: 当容器终止退出以后,总是重启容器,默认策略。
  • onFailure:当容器异常退出(退出状态码非0)时,才重启容器。
  • Nerver:当容器终止退出,从不重启容器。
restartPolicy: Nerver

6. Pod健康检查

  • livenessProbe(存活检查)

    如果检查失败,将杀死容器,根据Pod的restartPolicy来操作。

  • readinessProbe(就绪检查)

    如果检查失败,Kubernetes会把Pod从service endpoints中剔除。

Probe支持以下三种检查方法:

  • httpGet:发送HTTP请求,返回200-400范围状态码为成功。
  • exec:执行Shell命令返回状态码是0为成功。
  • tcpSocket:发起TCP Socket建立成功。
# 存活检查
livenessProbe:
  exec:
    command:
      - cat
      - /tmp/healthy
    initialDelaySeconds: 5
    periodSeconds: 5