kubernetes | pod

2022-10-25 17:08:44 浏览数 (2)

前言#

基于centos7.9docker-ce-20.10.18kubelet-1.22.3-0

基本概念#

  • 最小部署单元
  • 一组容器的集合
  • 一个Pod中的容器共享网络命名空间
  • Pod是短暂的

存在意义#

Pod为亲密性应用而存在。

亲密性应用场景:

  • 两个应用之间发生文件交互
  • 两个应用需要通过127.0.0.1或者socket通信(典型组合:nginx php)
  • 两个应用需要发生频繁的调用

容器分类#

  • Infrastructure Container:基础容器,维护整个Pod网络空间
  • InitContainers:初始化容器,先于业务容器开始执行
  • Containers:业务容器,并行启动

Infrastructure Container

pod中总会多一个pause容器,这个容器就是实现将pod中的所有容器的网络命名空间进行统一,a容器在localhost或者127.0.0.1的某个端口提供了服务,b容器访问localhost或者127.0.0.1加端口也可以访问到

Init container:

  • 基本支持所有普通容器特征
  • 优先普通容器执行

应用场景:

  • 控制普通容器启动,初始容器完成后才会启动业务容器
  • 初始化配置,例如下载应用配置文件、注册信息等

示例

代码语言:javascript复制
apiVersion: v1
kind: Pod
metadata:
  name: init-demo
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80
    volumeMounts:
    - name: workdir
      mountPath: /usr/share/nginx/html
  initContainers:
  - name: install
    image: busybox
    command:
    - wget
    - "-O"
    - "/work-dir/index.html"
    - http://www.baidu.com/index.html
    volumeMounts:
    - name: workdir
      mountPath: "/work-dir"
  dnsPolicy: Default
  volumes:
  - name: workdir
    emptyDir: {}

静态pod#

静态Pod特点:

  • Pod由特定节点上的kubelet管理
  • 不能使用控制器
  • Pod名称标识当前节点名称

在kubelet配置文件启用静态Pod:

代码语言:javascript复制
vi /var/lib/kubelet/config.yaml
...
staticPodPath: /etc/kubernetes/manifests
...

将部署的pod yaml放到该目录会由kubelet自动创建

重启策略#

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

健康检查#

健康检查有以下两种类型:

  • livenessProbe(存活检查):如果检查失败,将杀死容器,根据Pod的restartPolicy来操作。
  • readinessProbe(就绪检查):如果检查失败,Kubernetes会把Pod从service endpoints中剔除。

支持以下三种检查方法:

  • httpGet:发送HTTP请求,返回200-400范围状态码为成功。
  • exec:执行Shell命令返回状态码是0为成功。
  • tcpSocket:发起TCP Socket建立成功。

示例

代码语言:javascript复制
apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-exec
spec:
  containers:
  - name: liveness
    image: busybox
    args:
    - /bin/sh
    - -c
    - touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600
    livenessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5
      periodSeconds: 5

0 人点赞