美文网首页
Kubectl Inspect Pod 插件

Kubectl Inspect Pod 插件

作者: JaeGwen | 来源:发表于2019-04-12 15:12 被阅读0次

    虽然目前还没有像标题所示的kubectl inspect command,但kubectl现在有一个新重新设计的插件系统,它允许您轻松创建自己的检查命令并让它做任何你想做的事情

    正如您所看到的,我的kubectl inspect插件使您能够快速显示Kubernetes资源的YAML - 语法高亮!

    我知道人们讨厌YAML,但我更喜欢通过使用像kubectl describe这样的东西来查看它的原始YAML来检查资源。使用语法高亮显示,阅读YAML非常简单。

    我最近从cat(meow)升级到bat(squeek)用于打印文件,但是让它使我的资源用颜色闪耀需要太多的击键。例如:

    $ kubectl get pod mypod -o yaml | bat -l yaml -p
    

    这是要输入的许多额外字符,但它值得,因为它带来了这个颜色漂亮的YAML:


    使用该命令一段时间后,我有一个想法,并意识到我可以创建一个新的kubectl插件,允许我只需键入:

    $ kubectl inspect pod mypod
    

    我花了不到30秒的时间来创建插件。所需要的只是在我的PATH中添加一个名为kubectl-inspect的文件,其中包含以下内容:
    kubectl-inspect

    #!/bin/bash
    kubectl get "$@" -o yaml --export | bat -l yaml -p
    

    PS:新的kubectl插件系统可从v1.12.0-beta.1开始提供。
    使用插件扩展 kubectl

    root@k8s-master-1:~/.kube# mkdir -p plugins
    root@k8s-master-1:~/.kube/plugins# tree
    .
    └── inspect
       └── plugin.yaml
    
    1 directory, 1 file
    
    root@k8s-master-1:~/.kube/plugins# cat inspect/plugin.yaml
    name: "inspect" 
    shortDesc: "Inspect Yaml Highlighting"
    longDesc: "Inspect Kubernetes Resource's YAML Highlighting"
    example: "kubectl inspect pod [PODNAME] -n [NAMESPACE]"
    command: "kubectl-inspect"
    
    #add kube-inspect to PATH
    root@k8s-master-1:~/.kube/plugins# ls /usr/local/bin/
    helm  istioctl  kubectl-inspect  kube-prompt
    
    ##show  plugins list
    root@k8s-master-1:~# kubectl plugin list
    The following kubectl-compatible plugins are available:
    
    /usr/local/bin/kubectl-inspect
    
    
    
    root@k8s-master-1:~# kubectl get pod
    NAME                     READY   STATUS    RESTARTS   AGE
    myapp-8696457765-668bn   1/1     Running   3          30d
    myapp-8696457765-f87qm   1/1     Running   3          30d
    myapp-8696457765-jzqwm   1/1     Running   1          15d
    myapp-8696457765-x2xz7   1/1     Running   3          30d
    myapp-8696457765-x72sg   1/1     Running   3          30d
    root@k8s-master-1:~# kubectl inspect pod myapp-8696457765-668bn -n default
    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: null
      generateName: myapp-8696457765-
      labels:
        app: myapp
        pod-template-hash: "8696457765"
      ownerReferences:
      - apiVersion: apps/v1
        blockOwnerDeletion: true
        controller: true
        kind: ReplicaSet
        name: myapp-8696457765
        uid: d96e9ab7-409f-11e9-b31a-000c2954713e
      selfLink: /api/v1/namespaces/default/pods/myapp-8696457765-668bn
    spec:
      containers:
      - image: 314315960/zero-downtime-tutorial:green
        imagePullPolicy: IfNotPresent
        lifecycle:
          preStop:
            exec:
              command:
              - /bin/sh
              - -c
              - rm /usr/share/nginx/html/healthy.html && sleep 10
        name: nginx
        ports:
        - containerPort: 80
          protocol: TCP
        readinessProbe:
          failureThreshold: 2
          httpGet:
            path: /healthy.html
            port: 80
            scheme: HTTP
          periodSeconds: 1
          successThreshold: 1
          timeoutSeconds: 1
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
          name: default-token-b46m8
          readOnly: true
      dnsPolicy: ClusterFirst
      enableServiceLinks: true
      nodeName: 192.168.2.11
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      serviceAccount: default
      serviceAccountName: default
      terminationGracePeriodSeconds: 10
      volumes:
      - name: default-token-b46m8
        secret:
          defaultMode: 420
          secretName: default-token-b46m8
    status:
      phase: Pending
      qosClass: BestEffort
    
    

    相关文章

      网友评论

          本文标题:Kubectl Inspect Pod 插件

          本文链接:https://www.haomeiwen.com/subject/izqcwqtx.html