• kubernets学习之声明式资源管理方法


    k8s声明式资源管理办法

    声明式资源管理方法依赖于——资源配置清单(yaml/json)

    查看资源配置清单的方法

    [root@hdss7-21 ~]# kubectl get svc nginx-dp -o yaml -n kube-public
    

    解释资源配置清单

    [root@hdss7-21 ~]# kubectl explain service.metadata
    

    创建资源配置清单

    vim /root/nginx-ds-svc.yaml
    
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: nginx-ds
      name: nginx-ds
      namespace: default
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: nginx-ds
      # sessionAffinity: None 默认就是none
      type: ClusterIP
    

    创建

    [root@hdss7-21 ~]# kubectl create -f nginx-ds-svc.yaml
    service/nginx-ds created
    
    [root@hdss7-21 ~]# kubectl get svc -n default
    NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
    kubernetes   ClusterIP   192.168.0.1      <none>        443/TCP   14d
    nginx-ds     ClusterIP   192.168.17.122   <none>        80/TCP    62s
    

    修改yaml文件,把端口改为8080

    [root@hdss7-21 ~]# kubectl delete svc nginx-ds
    service "nginx-ds" deleted
    
    [root@hdss7-21 ~]# kubectl apply -f nginx-ds-svc.yaml
    service/nginx-ds created
    
    [root@hdss7-21 ~]# kubectl get svc -n default
    NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
    kubernetes   ClusterIP   192.168.0.1      <none>        443/TCP    14d
    nginx-ds     ClusterIP   192.168.101.10   <none>        8080/TCP   14s
    

    修改资源配置分为两类

    • 在线修改(不推荐,使用该方法没有历史记录)

      [root@hdss7-21 ~]# kubectl edit svc nginx-ds
      
      service/nginx-ds edited
      
      [root@hdss7-21 ~]# kubectl get svc -n default
      NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
      kubernetes   ClusterIP   192.168.0.1      <none>        443/TCP   15d
      nginx-ds     ClusterIP   192.168.101.10   <none>        80/TCP    4m21s
      

      又将8080改为80

    • 离线修改(推荐:有历史记录)

      修改对应的yaml文件,并用kubectl apply -f nginx-ds-svc.yaml命令使修改生效。

    有些段是默认的,不用全部列出来。

    拉取nginx镜像

    [root@hdss7-21 ~]# docker login docker.io
    [root@hdss7-21 ~]# docker pull xxxxxxxxxxxx/nginx:curl
    [root@hdss7-21 ~]# docker images | grep curl
    xxxxxxxxxxxx/nginx         curl              6f10e7047510      3 days ago          136MB
    
    [root@hdss7-21 ~]# docker tag 6f10e7047510 harbor.od.com/public/nginx:curl
    
    [root@hdss7-21 ~]# docker images | grep curl
    harbor.od.com/public/nginx curl              6f10e7047510      3 days ago          136MB
    xxxxxxxxxxxx/nginx         curl              6f10e7047510      3 days ago          136MB
    
    [root@hdss7-21 ~]# docker push harbor.od.com/public/nginx:curl
    The push refers to repository [harbor.od.com/public/nginx]
    761966e456bc: Pushed 
    4258832b2570: Pushed 
    683a28d1d7fd: Pushed 
    d626a8ad97a1: Pushed 
    curl: digest: sha256:094f8762228ad310514b54fde096ee9594741171b33da2deee21d32a612eba76 size: 1160
    

    修改资源配置清单,把v1.7.9改成curl

    [root@hdss7-21 ~]# vim nginx-ds.yaml
    ........
            image: harbor.od.com/public/nginx:curl
    
    [root@hdss7-21 ~]# kubectl apply -f nginx-ds.yaml 
    Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply daemonset.extensions/nginx-ds configured
    
    [root@hdss7-21 ~]# kubectl get svc nginx-dp -o yaml -n kube-public > nginx-dp-svc.yaml
    

    查看

    [root@hdss7-21 ~]# kubectl describe ds nginx-ds
    Name:           nginx-ds
    Selector:       app=nginx-ds
    Node-Selector:  <none>
    Labels:         app=nginx-ds
    Annotations:    deprecated.daemonset.template.generation: 2
                    kubectl.kubernetes.io/last-applied-configuration:
                      {"apiVersion":"extensions/v1beta1","kind":"DaemonSet","metadata":{"annotations":{},"name":"nginx-ds","namespace":"default"},"spec":{"templ...
    Desired Number of Nodes Scheduled: 2
    Current Number of Nodes Scheduled: 2
    Number of Nodes Scheduled with Up-to-date Pods: 0
    Number of Nodes Scheduled with Available Pods: 2
    Number of Nodes Misscheduled: 0
    Pods Status:  2 Running / 0 Waiting / 0 Succeeded / 0 Failed
    Pod Template:
      Labels:  app=nginx-ds
      Containers:
       my-nginx:
        Image:        harbor.od.com/public/nginx:curl
        Port:         80/TCP
        Host Port:    0/TCP
        Environment:  <none>
        Mounts:       <none>
      Volumes:        <none>
    Events:           <none>
    

    因此,发现声明式资源管理清单方法,修改参数时,非常方便。

    [root@hdss7-21 ~]# kubectl get pods
    NAME             READY   STATUS    RESTARTS   AGE
    nginx-ds-nmgjn   1/1     Running   1          7d23h
    nginx-ds-v7hrn   1/1     Running   1          7d23h
    

    陈述式删除(推荐),增,查,删方便

    [root@hdss7-21 ~]# kubectl delete svc nginx-ds
    service "nginx-ds" deleted
    
    kubectl delete -f nginx-dp-svc.yaml
    

    声明式删除,使用delete -f指定一个yaml文件

    [root@hdss7-21 ~]# kubectl delete -f nginx-dp-svc.yaml
    service "nginx-dp" deleted
    
    [root@hdss7-21 ~]# kubectl get svc 
    NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)   AGE
    kubernetes   ClusterIP   192.168.0.1   <none>        443/TCP   15d
    
    [root@hdss7-21 ~]# kubectl get pods -n kube-public
    NAME                        READY   STATUS    RESTARTS   AGE
    nginx-dp-5dfc689474-k2k8j   1/1     Running   0          22h
    
    [root@hdss7-21 ~]# kubectl get pods nginx-dp-5dfc689474-k2k8j -o yaml -n kube-public
    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: "2020-08-17T14:59:06Z"
      generateName: nginx-dp-5dfc689474-
      labels:
        app: nginx-dp
        pod-template-hash: 5dfc689474
      name: nginx-dp-5dfc689474-k2k8j
      namespace: kube-public
      ownerReferences:
      - apiVersion: apps/v1
        blockOwnerDeletion: true
        controller: true
        kind: ReplicaSet
        name: nginx-dp-5dfc689474
        uid: c13ba8c0-38a5-47aa-9937-e9c040d5cff6
      resourceVersion: "1016545"
      selfLink: /api/v1/namespaces/kube-public/pods/nginx-dp-5dfc689474-k2k8j
      uid: dd34958f-d695-4444-976f-c936c2829303
    spec:
      containers:
      - image: harbor.od.com/public/nginx:v1.7.9
        imagePullPolicy: IfNotPresent
        name: nginx
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
          name: default-token-bqfhp
          readOnly: true
      dnsPolicy: ClusterFirst
      enableServiceLinks: true
      nodeName: hdss7-22.host.com
      priority: 0
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      serviceAccount: default
      serviceAccountName: default
      terminationGracePeriodSeconds: 30
      tolerations:
      - effect: NoExecute
        key: node.kubernetes.io/not-ready
        operator: Exists
        tolerationSeconds: 300
      - effect: NoExecute
        key: node.kubernetes.io/unreachable
        operator: Exists
        tolerationSeconds: 300
      volumes:
      - name: default-token-bqfhp
        secret:
          defaultMode: 420
          secretName: default-token-bqfhp
    status:
      conditions:
      - lastProbeTime: null
        lastTransitionTime: "2020-08-17T14:59:06Z"
        status: "True"
        type: Initialized
      - lastProbeTime: null
        lastTransitionTime: "2020-08-17T14:59:08Z"
        status: "True"
        type: Ready
      - lastProbeTime: null
        lastTransitionTime: "2020-08-17T14:59:08Z"
        status: "True"
        type: ContainersReady
      - lastProbeTime: null
        lastTransitionTime: "2020-08-17T14:59:06Z"
        status: "True"
        type: PodScheduled
      containerStatuses:
      - containerID: docker://5fbb01b7f9b984acd1ea862d0aceebc46089100b2b7afe05539d50ed659e75aa
        image: harbor.od.com/public/nginx:v1.7.9
        imageID: docker-pullable://harbor.od.com/public/nginx@sha256:b1f5935eb2e9e2ae89c0b3e2e148c19068d91ca502e857052f14db230443e4c2
        lastState: {}
        name: nginx
        ready: true
        restartCount: 0
        state:
          running:
            startedAt: "2020-08-17T14:59:07Z"
      hostIP: 10.4.7.22
      phase: Running
      podIP: 172.7.22.3
      qosClass: BestEffort
      startTime: "2020-08-17T14:59:06Z"
    

    获取service

    [root@hdss7-21 ~]# kubectl get svc -n kube-public
    NAME       TYPE        CLUSTER-IP        EXTERNAL-IP   PORT(S)   AGE
    nginx-dp   ClusterIP   192.168.222.251   <none>        80/TCP    22h
    
    [root@hdss7-21 ~]# kubectl get svc nginx-dp -o yaml -n kube-public
    apiVersion: v1
    kind: Service
    metadata:
      creationTimestamp: "2020-08-17T15:04:08Z"
      labels:
        app: nginx-dp
      name: nginx-dp
      namespace: kube-public
      resourceVersion: "1016979"
      selfLink: /api/v1/namespaces/kube-public/services/nginx-dp
      uid: 99681724-4920-4d24-9d40-b6b9618d2362
    spec:
      clusterIP: 192.168.222.251
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: nginx-dp
      sessionAffinity: None
      type: ClusterIP
    status:
      loadBalancer: {}
    

    查看相关说明(学习yaml最重要的命令是explain)

    [root@hdss7-21 ~]# kubectl explain service.metadata
    KIND:     Service
    VERSION:  v1
    
    RESOURCE: metadata <Object>
    
    DESCRIPTION:
         Standard object's metadata. More info:
         https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
    
         ObjectMeta is metadata that all persisted resources must have, which
         includes all objects users must create.
    
    FIELDS:
       annotations	<map[string]string>
         Annotations is an unstructured key value map stored with a resource that
         may be set by external tools to store and retrieve arbitrary metadata. They
         are not queryable and should be preserved when modifying objects. More
         info: http://kubernetes.io/docs/user-guide/annotations
    
  • 相关阅读:
    Docker build Dockerfile 构建镜像
    Docker 容器启动 查看容器状态
    Docker 获取镜像
    Docker 容器状态查看
    windows 检测进程pid
    bzoj 1083 最小生成树
    bzoj 2039 最小割模型
    bzoj 2749 杂题
    bzoj 2748 DP
    bzoj 3190 维护栈
  • 原文地址:https://www.cnblogs.com/liuhuan086/p/13526623.html
Copyright © 2020-2023  润新知