在 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
明天就到这里,学习所得,若有偏差,还请斧正
欢送点赞,关注,珍藏
敌人们,你的反对和激励,是我保持分享,提高质量的能源
好了,本次就到这里
技术是凋谢的,咱们的心态,更应是凋谢的。拥抱变动,背阴而生,致力向前行。
我是阿兵云原生,欢送点赞关注珍藏,下次见~