zoukankan      html  css  js  c++  java
  • k8s资源清单创建pod

    资源:对象

    service pod deployment

    workload:pod,ReplicaSet,Deployment,statefulset,DaemonSet,Job,Crontabjob,...

    服务发现和负载均衡:service ,Ingress,....

    配置与存储:Volumn存储卷 ,CSI存储接口

    ConfigMap,Secret,

    DownwardAPI

    集群级资源:namespace,Node,Role,ClusterRole,RoleBinding,ClusterRoleBinding,

    元数据型资源

    HPA,PodTemplate,LimitRange

    kubectl get pod myapp-84cd4b7f95-h47cj -o yaml

    yml文件查看pod详细的配置清单

    创建资源的方法:

    apiserver仅接收JSON格式的资源定义;

    yaml格式提供配置清单,apiserver可自动转为json格式,而后在提交

    kubectl api-versions

    大部分资源的配置清单:

    apiVerison:group/version,

    kind:资源类别

    metadata:元数据

      name

      namespace

      labels

      annotations 资源注解

       每个资源的引用PATH

            /api/GROUP/VERSION/namespaces/NAMESPACE/TYPE/NAME

    spec:规格 期望的状态 disired state

    spec.containers

      - name <string>

       image <string>

       imagePullPolicy <string>

         Always,Never,IfNotPresent

         总是去仓库下载 不下载 不存在就去下载,存在就直接使用

    修改镜像中默认的运用:

    kubectl explain pods.spec.containers

     command ,args

    https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

    标签labels

    kubectl get pods --show-labels

    key=value(小于63个字符)

    key:字母,数字,”-_”

    value:可以为空

    kubectl get pods -l app --show-labels 找出含有app标签的pod

    kubectl get pods -L app,run --show-labels -o wide 匹配字段查询

    打标签

    kubectl label –help

    kubectl label pods pod-demo release=canary

                 类型   资源名     标签名=canary

    kubectl get pods -l app --show-labels  查看是否打上标签

    覆盖修改标签

    kubectl label pods pod-demo release=stable –overwrite

    kubectl get pods -l app,release --show-labels 既有app也有release标签

    标签选择器

    等值:=,==,!= 

    kubectl get pods -l release=stable  --show-labels

    kubectl label pods nginx-7bb7cd8db5-7dn9r release=canary

    kubectl get pods -l release

    kubectl get pods -l release=canary

    kubectl get pods -l release,app

    kubectl get pods -l release=stable,app=myapp

    kubectl get pods -l release!=canary --show-labels

    集合关系:key in (values1,value2…), key not in (values1,value2…),key,!key

     kubectl get pods -l "release in (canary,beta,alpha)" --show-labels

    kubectl get pods -l "release notin (canary,beta,alpha)" --show-labels

    许多资源支持内嵌字段定义其使用标签选择器:

    matchLabels:直接给定键值,相当于=

    matchExpressions:基于给定的表达式来定义使用标签选择器,{key:”KEY”,operator:”OPERATOR”,values:[VAL1,VAL2…]}大写字母表示替换

    operator操作符:In ,NotIn values字段必须为非空列表

    Exists,NotExists values字段必须为空列表

    各种对象都能打标签,不仅限于pod,比如node

    kubectl get nodes --show-labels

    kubectl label nodes node02 disktype=ssd 对node02打标签

    kubectl explain pods.spec

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

    kubectl label nodes node01 disktype=hd

    vim pod-demo.yaml

    containers:

       …

    nodeSelector:

    disktype: hd

    kubectl delete -f pod-demo.yaml

    kubectl create -f pod-demo.yaml 再次创建会运行在node01上

    kubectl describe pods pod-demo

    nodeName   <string> 指定运行在哪个节点上

    annotations:资源注解

     与label不同的地方在于,它不能用于挑选资源对象,仅用于为对象提供”元数据”,

    vim pod-demo.yaml

    metadata:

      annotations:

        work in node02: "disk is ssd"

    kubectl delete -f pod-demo.yaml

    kubectl create -f pod-demo.yaml

    kubectl describe pods pod-demo

    Annotations:  work_in_node02: disk is ssd

    status:当前状态,current state,本字段由kubernetes集群维护;用户不能定义

    kubectl explain pods 查询pods怎么定义

    kubectl explain pods.metadata 查询pods的metadata怎么定义

    kubectl explain pods.spec

    kubectl explain pods.spec.containers

    kubectl explain pods.spec.containers.livenessProbe

    例如:自定义一个pod资源

    vim pod-demo.yaml

    apiVersion: v1

    kind: Pod

    metadata:

      name: pod-demo

      namespace: default

      labels:

        app: myapp

        tier: frontend

    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"

    注释:

    spec:

    containers:

    - name: myapp

    image: ikubernetes/myapp:v1

    相当于 spec:{containers:['name:myapp'],image:"ikubernetes/myapp:v1"}

    command:

    - "/bin/sh"

    - "-c"

    - "sleep 3600"

    相当于 command:["/bin/sh","-c","sleep 3600"]

    kubectl create -f pod-demo.yaml    基于yaml清单文件创建pod资源

    从文件加载创建资源

    kubectl get pods 再查看一下创建的pod

    kubectl describe pods pod-demo 查看创建的资源的描述信息

    查看容器日志

    kubectl logs pod-demo myapp

               pod名  pod里面的容器名

    进入容器

    kubectl exec -it pod-demo -c myapp -- /bin/sh

            输入和终端 pod名 -c指定容器名 --执行的命令

    kubectl delete -f pod-demo.yaml 删除基于资源清单yaml文件定义的资源

  • 相关阅读:
    document.write("x3cx54")?是加密了吗?
    SQL中以count及sum为条件的查询
    给MyEclipse 10增加SVN功能
    iOS参考工具和资源
    Apple Developer参考资料
    [转]最常见的20个jQuery面试问题及答案
    丢掉鼠标-Mac神软Alfred使用手册
    jQuery执行进度提示窗口的实现(progressbar)
    [转]5个JavaScript面试题
    自己写的POIUtil,主要解决从不同的HSSFWorkbook复制sheet以及根据单元格插入图片等
  • 原文地址:https://www.cnblogs.com/leiwenbin627/p/11285892.html
Copyright © 2011-2022 走看看