关于kubernetes:pod-知识点-上

44次阅读

共计 2480 个字符,预计需要花费 7 分钟才能阅读完成。

在 K8S 中,pod 是一个十分要害的存在,咱们一起来看看 pod 具体是个什么?

pod 是个啥?

pod 是个什么呢?pod 是 K8S 中的一个外围概念

每一个 pod 都会有一个非凡的根容器,叫做 pause 容器,pause 容器对应的镜像也是属于 K8S 的一部分的

pod 外面可不仅仅只有 pause 容器,还能够有其余多个容器

之前文章咱们略微提到过 pod,每一个 pod,都是一个具体利用的实例,pod 有本人单独的 IP,主机名,过程等等

  • pod 与 容器是 1 对多的关系

一个 pod 外面能够有多个容器,多个容器彼此共享网络和存储资源

咱们都是通过 pod 中的 pause 容器 来治理其余容器的,因为 pause 容器会存储所有的容器状态

  • pod 和节点的关系

pod 存在于节点中,不同节点的 pod 互相通信,是通过二层网络通信的

  • pod 本身还有啥不同的?

pod 本身还分成一般的 pod,和动态的 pod

咱们如何定义一个 pod

在 K8S 中定义一个 pod 也是比较简单的,就是写一个 yaml 文件,只不过咱们刚开始须要多加尝试和练习

yaml 文件大体是这样的,纯手写,上面的配置,我把不太容易了解的或者说是容易误会的名词解释一下,其余的自行看英文即可了解

apiVersion: v1  // 版本号
kind: Pod        // 类型
metadata: 
  name: pod name
  namespace: pod namespace
  labels:
    - name: pod label
    annotations:
    - name: pod annotation    // 自定义正文列表
spec:    // pod 中容器的具体定义
  container:
  - name: container name
    image: container image
    imagesPullPolicy: [Always|Never|IfNotPresent] // 镜像拉取策略
    command: command list
    agrs: app start params
    workingDir: work dir
    volumeMounts:
    - name: volume name
      mountPath: volume absolutely path
      readonly: boolean
    ports:
    - name: ports list name
      containerPort: 8888
      hostPort: 9999
      protocol: TCP  // 能够是 TCP 和 UDP
    env:
    - name: env name
      value: string
    resources:
      limits:
        cpu: string
        memory: string
      requeste:
        cpu: string
        memory: string
    livenessProbe:        // 健康检查设置
      exec:
        command: [string]
      httpGet:             // 通过 httpGet  形式查看
        path: string
        port: string
        host: string
        scheme: string
        httpHeaders: 
        - name: httpHeaders name
          value: string    
      tcpSocket:        // 通过 tcpSocket 形式查看
        port: 80
      initialDelaySeconds: 0    // 首次查看工夫
      timeoutSeconds: 0            // 超时查看工夫
      periodSeconds: 0            // 查看间隔时间
      successTreshold: 0
      failuerTreshold: 0
      securityContext:            // 平安配置
        privileged: false
    restartPolicy: [Always|Never|OnFailure]
    nodeSelector: object
    imagePullSecrets:
    - name: string
    hostNetwork: false            // 是否应用主机网络模式?volumes:                        // 存储卷
  - name: volumes list name
    emptyDir: {}
    hostPath:                // pod 所在主机的目录,用于挂载
      path: string
    secret:                    // secret 类型 存储卷
      secretName: secret name
      item:
      - key: specific key
        path: key path
    configMap:                // configmap 类型存储卷
      name: string
      items:
      - key: specific key
        path: string

看了下面的这个 yaml,起初可能会感觉有点多,一下子记不住,xdm,没有让你记住,咱们只须要晓得 pod 的 yaml 是长 这个样子,外面都有哪些用法即可

pod 根本用法应用示例

在 K8S 中对 pod 中的容器运行也是有要求的

  • 容器的主程序是在前台运行,而不是后盾,因而,利用须要革新成前台运行的形式
  • 若 pod 中蕴含的容器是一个 后盾执行程序,那么执行完命令之后,pod 就会被销毁
  • 若 pod 是一个 rc,rc 就是 replicationController,那么 pod 就会处于一个 创立,销毁的循环中 需注意

咱们分享创立的 pod,能够是外面放 1 个容器,也能够是放多个容器的,依据咱们须要去解决即可

1 个 pod 放 1 个容器

例如咱们 1 个 pod 外面放 1 个 mongdb 的容器,能够这样来写

1 个 pod 放 多个 容器

例如咱们 1 个 pod 外面放 1 个 mongodb 和 1 个 redis 容器,能够这样来写

如何操作 pod

依据已有 yaml 创立 pod

kubectl create -f yaml 文件

查看 pod 和 查看 pod 详情

例如这样的

  • kubectl get pod -A

查看所有命名空间上面的 pod

  • kubectl get pod pod 名字
  • Kubectl get pod pod 名字 -o wide

查看 pod 的更多信息

  • kubectl describe pod pod 名字

查看 pod 的详情

删除 pod

  • kubectl delete pod pod 名字
  • kubectl delete pod pod 名字 -n 命名空间
  • kubectl delete pod --all

删除所有的 pod

明天就到这里,学习所得,若有偏差,还请斧正

欢送点赞,关注,珍藏

敌人们,你的反对和激励,是我保持分享,提高质量的能源

好了,本次就到这里

技术是凋谢的,咱们的心态,更应是凋谢的。拥抱变动,背阴而生,致力向前行。

我是 阿兵云原生,欢送点赞关注珍藏,下次见~

正文完
 0