06-kubernetesPod控制器应用进阶

回顾

资源配置清单
自主式Pod资源

资源的清单格式
    一级字段: apiVersion(group/version), kind, metadata(name, namespace, kind, metadata(name, namespace, labelds, annotations, ...), spec, status(只读))

Pods资源:
    spec.containers <[]object>

    -   name <string>
        iamge <string>
        imagePullPolicy <string>
            Always, Never, IfNotPresent
        
        修改镜像中的默认应用:
            commands, args
        
        标签:
            key=value
                key: 字母, 数字, _, -, . 
                value: 可以为空,只能为字母数字开头及结尾,中间可使用 
        
        标签选择器:
            等值关系的标签选择器: =, ==, !=, 
            集合关系的标签选择器:
                KEY IN [VALUE1, VALUE2, ...]
                KEY NOTIN [VALUE1, VALUE2, ...]
                KEY
                !KEY

        许多资源支持内嵌字段定义其使用的标签选择器:
            matchLabels: 直接给定键值
            matchExpressions: 基于给定的表达式来定义使用标签选择器, (key: "KEY", operator: "OPERATOR", values:[VAL1, VAL2, VAL3...])
            操作符: 
                In, NotIn: values字段的值必须为非空列表;
                Exists, NotExists: values字段的值必须为空列表;

        nodeSelector <map|string|string>
            节点标签选择器

        nodeName <string>
        
        annotations:
            与label的区别是,不能用于挑选资源对象,仅用于为对象提供"元数据"
        
        Pod的生命周期:
            状态: pending, Running, Failed,Succeeded, Unknown

            创建Pod: 
                Pod生命周期中的重要行为:
                    1. 初始化容器
                    2. 容器探测 liveness readliness

        restartPolicy:
            1. Always, OnFailure, Never, Default to Always

配置文件

apiVersion: v1
kind: Pod
metadata:
    name: pod-demo
    namespace: default
    labels:
        app: myapp
        tier: frontend
    annotations:
        sky.com/create.by: "cluster admin"
spec:
    containers:
    -   name: myapp
        image: ikubernetes/myapp:v1
        ports:
        -   name: http
            containerPort: 80
            name: https
            containerPort: 443
    -   name: busybox
        image: busybox:latest
        imagePullPolicy: IfNotPresent
        command:
        - "/bin/sh"
        - ".c"
        - "sleep 3600"
    nodeSelector:
        disktype: ssd

应用实例

  1. 示例1, 显示拥有app标签的pods, kubectl get pods -l app --show-labels

  2. 示例2, 显示多标签的pods。显示拥有app, run标签的pods。kubectl get pods -l app,run

  3. 示例3, 给pods打标签,kubectl label pods pod-demo release=canary

kubectl get pods -l app --show-label查看已打得标签

  1. 示例4, 更改pods的标签,kubectl label pods pod-demo release=stable --overwrite

  2. 示例5, 标签选择器,查看pods标签是stable的pods kubectl get pods release=stable --show-labels

  3. 示例6, 查看拥有release标签的pods, kubectl label pods nginx-deploy-5b59***-*** release=cannary

  4. 示例7, 查看release标签是app的pods, kubectl get pods -l release=stable

  5. 示例8, 查看release标签是stable, app标签是myapp的pods, kubectl get pods -l release=stable,app=myapp

  6. 示例9, 查看release标签是否在集合[cannary, beta, alpha]中, kubectl get pods -l "release in (canary, beta, alpha)"

  7. 示例10, 给磁盘类型打标签, kubectl label nodes node01.magedu.com disktype=ssd

发布了21 篇原创文章 · 获赞 0 · 访问量 2611

猜你喜欢

转载自blog.csdn.net/u012720518/article/details/105449120