zoukankan      html  css  js  c++  java
  • 【k8s】3-kubectl 命令以及 yaml文件学习

    Kubectl apiserver 管理对象命令

      Pod service replicaset deployment statefulet daemonset job cronjob node

    Kubectl get cs 查看信息等 

    命令启动pod

    Kubectl run -> create a deployment or job manage the created container

    Kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80   普通pod

    Kubectl run pi --schedule=”0/5 * * * ?” --image=perl  job控制器   

    # 查看信息

    kubectl get svc

    kubectl get pods

    kubectl get deployments

    kubectl describe pods nginx-deploy   # 列出所有pod详情

    kubectl describe deployment nginx-deploy  # 列出deployment控制器详情

    # 暴露端口 创建svc

    expose deployment nginx-deploy --name=nginx-deploy --port=80 --protocol=TCP --target-port=80

    # 修改副本集 数量为5

    kubectl scale --replicas=5 deployment nginx-deploy 

    # 滚动更新

    kubectl set image deployment nginx-deploy nginx=nginx:1.5

      

    # 查看滚动更新情况

    kubectl rollout status deployment nginx-deploy

    # 修改对外访问

    # 手动在外部做负载均衡器到内部端口

    kubectl edit svc nginx-deploy 

    Type: ClusterIP ---> Nodeport

    kubectl get svc

    Curl nodeip:随机端口 

    yaml文件的学习

    配置清单

    # 查看pod配置清单 以yaml文件输出

    kubectl get pods nginx-deploy-5bf87f5f59-bgzl7 -o yaml

    # 大部分资源配置清单

    Apiversiongroup/versi on   # Kubectl api-versions 所属群组

    kind: 资源类别

    metadata:元数据

      Name:名称唯一

      Namespace:名称空间

      Labels:标签

      Annotations

      SelfLink: /api/GROUP/VERSION/namespaces/NAMESPACE_NAME/TYPE/NAME

    spec: 期望状态 disired state

    status: 让当前状态 current state 本字段由kubernetes集群维护

    kubectl explain pods 内嵌说明

    Kubectl explain pods.spec 

    Yaml文件
    # 创建
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-demo
      namespace: default
      labels:
        app: myapp
        tier: frontend
    spec:    
      containers:
      - name: myapp
        image: nginx
      - name: busybox
        image: busybox:latest
        command:
        - "/bin/sh"
        - "-c"
        - "sleep 3500"

    kubectl create -f pod-demo.yaml  # 创建pod 

    kubectl exec -it pod-demo -c myapp -- /bin/sh    # 进入pod

    Kubectl delete -f pod-demo.yaml  # 删除pod

     

     Pod资源:

     

    spec.containers <[]object>
    - name <string> Image <string> imagePullPolicy <string> # Always拉取最新的,Never 本地没有不拉取,if本地没有再拉取 Always, Never 镜像中默认的应用: command,args
    标签:
       key=value
       Key: 字母 数字 _ 开头、 Value: 可为空 字母数字 

           标记标签

    Kubectl label pods pod-demo release=canary

    修改标签

    Kubectl label pods pod-demo release=stable --overwrite

    选择标签

    Kubectl get pods -l release

    标签选择器

    等值关系 Kubectl get pods -l release=stable,app=myapp

    集合关系 -l “release notin (canary,beta,alpha)”

    许多资源支持内嵌字段

    matchLabels: 直接给定键值

    matchExpressions: 基于给定的表达式来使用选择器

    In,Notin:values

                     Exists,NotExists:values指必须为空列表

    nodeSelector <map[string]string>

    节点标签选择器

    kebectl label nodes node_name disktype=ssd

    Cat >>nginx-deploy.yaml<< EOF

    nodeSelector:

    Disktype: ssd

    EOF

    Annotations:

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

     

    Pod生命周期

    状态:pending 已经创建 但是没有适合配置的节点

        Running 运行状态

                      Failed 失败......

    创建Pod

    Pod生命周期中重要行为:

    初始化容器

    容器探测

    Liveness

    Readiness

             RestartPolicy:

             Always, OnFailure, Never 

        探针类型三种

             ExecActionTcpsocketActionHttpGetAction

     

    # kubectl explain pod.spec.containers.livenessProbe

    HTTPGET 
    apiVersion: v1
    kind: Pod
    metadata:
      name: liveness-httpget-pod
      namespace: default
    spec:
      containers:
      - name: liveness-httpget-container
        image: ikubernetes/myapp:v1
        imagePullPolicy: IfNotPresent
        ports:
        - name: http
          containerPort: 80
        livenessProbe:
          httpGet:
            port: 80
            path: /index.html
          initialDelaySeconds: 1
          periodSeconds: 3
    文件检查 
    EXEC
    apiVersion: v1
    kind: Pod
    metadata:
      name: liveness-exec-pod
      namespace: default
    spec:
      containers:
      - name: liveness-exec-container
        image: busybox:latest
        imagePullPolicy: IfNotPresent
        command: ["/bin/sh","-c","touch /tmp/healthy; slepp 30; rm -rf /tmp/healthy; sleep 3600"]
        livenessProbe:
          exec:
            command: ["test","-e","/tmp/healthy"]
      #restartPolicy:
          initialDelaySeconds: 1
          periodSeconds: 3

    #  pods yaml回顾

     apiVersion, kind, metadata, spec statu(只读)

    Spec:

    containers

    nodeSelector

    nodeName

    restartPolicy:

    Always,Never,OnFailure

    containers:

    name

    image

    imagePullPolicy

    Ports:

    name

    containerPort

    livenessProbe

    readinessProbe

    liftcycle

    ExecAction: exec

    TCPSocketAction: tcpSocket

    HTTPGetAction: httpGet

     

    Pod控制器

    ReplicaSet: 控制副本数量 支持滚动更新

    Deployment: 工作在ReplicaSet 滚动更新回滚 声明

    Daemon: 每个节点只运行一个POD副本 系统级守护进程

    Job:一次性任务

    Cronjob: 周期性JOB

    StatefulSet:  有状态服务

     

    kubectl edit rs myapp

    Kubectl explain deploy

    # 打补丁 更新

    kubectl apply -f deploy-demo.yaml

    Kubectl set image deployment myapp-deploy myapp=ikubernetes/myapp:v3

    Kubectl path deployment myapp-deploy -p ‘{“spec”:{“strategy”:”{“rollingUpdate”:{“maxsurge”:1,”maxUnavailable”:0}}}}’

     

    # 回滚

    kubectl get deployment -o wide

    kubectl rollout history deployment

    rollout undo deployment myapp-deploy --to-revision=1

     

     

      

     

  • 相关阅读:
    AGC037F Counting of Subarrays
    AGC025F Addition and Andition
    CF506C Mr. Kitayuta vs. Bamboos
    AGC032D Rotation Sort
    ARC101F Robots and Exits
    AGC032E Modulo Pairing
    CF559E Gerald and Path
    CF685C Optimal Point
    聊聊Mysql索引和redis跳表
    什么是线程安全
  • 原文地址:https://www.cnblogs.com/oscarli/p/12788584.html
Copyright © 2011-2022 走看看