欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Kubernetes (一)Pod

程序员文章站 2024-03-11 10:06:01
...
apiVersion: apps/v1
kind: Deployment
metadata:
    name: deployment-nginx
    namespace: default
spec:
    replicas: 2
    selector:
        matchLabels:
           app: deloyment-nginx
           release: canary
    strategy:
        rollingUpdate:
            maxSurge: 2
            maxUnavailable: 2
    template:
        metadata:
           labels:
             app: deloyment-nginx
             release: canary
        spec:
           shareProcessNamespace: true
           containers:
             - name: ngin1
               image: nginx
               lifecycle:
                   postStart:
                        exec:
                          command: ["/bin/sh","-c","echo welecome_nginx1 >/usr/share/nginx/html/index.html "]
             - name: shell
               image: busybox
               tty: true
               stdin: tru

简单点,就是pods看做一个虚拟机,pods内的所有container看做部署在虚拟机上进程,
pods的组成基于共享一个infra基础容器的名称空间的基础上,共享同一个Network Namespace,同时可以声明共享同一个Volume。这就是pods优先于但容器管理的优势,在docker中
可以使用docker run --net=B --volume-from=B --name=A ,但是B要优先于A启动,才会有A,
而在kubenetes中,因为有了pods的概念,有了infra的基础容器的优先启动,所以优于但容器的管理。
在pods中,一般按照“超亲密关系”的方式去设计容器:比如tomact和war包 (用到initContainer),日志的采集,以及上面yaml资源中的nginx1和shell两个container共享同一个ProcessNamespace:

     shareProcessNamespace: true
           containers:
             - name: ngin1
               image: nginx
               lifecycle:
                   postStart:
                        exec:
                          command: ["/bin/sh","-c","echo welecome_nginx1 >/usr/share/nginx/html/index.html "]
             - name: shell
               image: busybox
               tty: true
               stdin: tru
相关标签: Kubernetes-pods