• kubectl应用


    kubectl用法概述

    kubectl命令语法

    # kubectl [command] [TYPE] [NAME] [flags]
    
    • 1

    其中,command、TYPE、NAME、flags的含义如下。

    (1)command:子命令,用于操作Kubernetes集群资源对象的命令,例如create、delete、describe、get、apply等。
    (2)TYPE:资源对象的类型,区分大小写,能以单数形式、复数形式或者简写形式表示。例如以下3种TYPE是等价的。

    # kubectl get pod pod1
    # kubectl get pods pod1
    # kubectl get po pod1
    
    • 1
    • 2
    • 3

    3)NAME:资源对象的名称,区分大小写。如果不指定名称,则系统将返回属于TYPE的全部对象的列表,例如$ kubectl get pods将返回所有Pod的列表。
    (4)flags:kubectl子命令的可选参数,例如使用“-s”指定apiserver的URL地址而不用默认值。

    在一个命令行中也可以同时对多个资源对象进行操作,以多个TYPE和NAME的组合表示,示例如下。

    获取多个Pod的信息

    # kubectl get pods pod1 pod2
    
    • 1

    同时应用多个yaml文件,以多个-f file参数表示

    # kubectl get pod -f pod1.yaml -f pod2.yaml
    # kubectl create -f pod1.yaml -f rc1.yaml -f service1.yaml
    
    • 1
    • 2

    kubectl输出格式

    kubectl 命令可以用多种格式对结果进行显示,输出的格式通过-o参数指定:

    # kubectl [command] [TYPE] [NAME] -o=
    
    • 1

    常用的输出格式如下:

    (1)显示Pod更多信息

    **# kubectl get pod  -o wide**
    
    • 1

    (2)以yaml格式显示Pod的详细信息

    **# kubectl get pod  -o yaml**
    
    • 1

    (3)以自定义列名显示Pod的信息

    **# kubectl get pod  -o=custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion**
    
    • 1

    (4)基于文件的自定义列名输出

    **# kubectl get pods  -o=custom-columns-file=template.txt**
    
    • 1

    template.txt文件的内容为

    NAME                RSRC
    metadata.name       metadata.resourceVersion
    
    • 1
    • 2

    输出结果

    **# kubectl get pods chaosfomoney-deployment-64ccd59bdc-h72gh -o=custom-columns-file=template.txt** 
    NAME                                       RSRC
    chaosfomoney-deployment-64ccd59bdc-h72gh   101119
    
    • 1
    • 2
    • 3

    将输出结果按某个字段排序,通过–sort-by参数以jsonpath表达式进行指定

    kubectl [command] [TYPE] [NAME] --sort-by=<jsonpath_exp>
    
    • 1

    例如按照名字进行排序

    [root@master ~]# kubectl get pods
    NAME                      READY   STATUS             RESTARTS   AGE
    apache-594d8494b4-s6dfd   0/1     ImagePullBackOff   0          9m1s
    nginx-6799fc88d8-nbgc2    1/1     Running            0          35h
    
    • 1
    • 2
    • 3
    • 4
    # kubectl get pods --sort-by=.metadata.name
    NAME                                       READY     STATUS    RESTARTS   AGE
    chaosfomoney-deployment-64ccd59bdc-h72gh   1/1       Running   0          1d
    chaosfomoney-deployment-64ccd59bdc-spnpj   1/1       Running   0          1d
    chaosfomoney-deployment-64ccd59bdc-xhnjr   1/1       Running   0          1d
    
    • 1
    • 2
    • 3
    • 4
    • 5

    kubectl操作示例

    查看所有node详细信息

    [root@master ~]# kubectl get nodes
    NAME     STATUS   ROLES                  AGE   VERSION
    master   Ready    control-plane,master   36h   v1.20.0
    node1    Ready    <none>                 35h   v1.20.0
    node2    Ready    <none>                 35h   v1.20.0
    
    • 1
    • 2
    • 3
    • 4
    • 5

    查看 运行详细信息

    [root@master ~]# kubectl get pods -o wide
    NAME                      READY   STATUS             RESTARTS   AGE   IP           NODE    NOMINATED NODE   READINESS GATES
    apache-594d8494b4-s6dfd   0/1     ImagePullBackOff   0          19m   10.244.1.3   node1   <none>           <none>
    nginx-6799fc88d8-nbgc2    1/1     Running            0          35h   10.244.1.2   node1   <none>     
    
    • 1
    • 2
    • 3
    • 4

    创建一个deployment类型的资源

    [root@master ~]# kubectl create deployment deploy-web --image=itlang11:v0.1 --replicas=3
    deployment.apps/deploy-web created
    
    
    [root@master ~]# kubectl get pods
    NAME                          READY   STATUS              RESTARTS   AGE
    apache-594d8494b4-s6dfd       0/1     ImagePullBackOff    0          26m
    deploy-web-79df5694b9-2sh6d   0/1     ImagePullBackOff    0          64s
    deploy-web-79df5694b9-5lvqk   0/1     ImagePullBackOff    0          64s
    deploy-web-79df5694b9-bqxpb   0/1     ContainerCreating   0          64s
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    删除

    [root@master ~]# kubectl delete deployment deploy-web
    deployment.apps "deploy-web" deleted
    
    • 1
    • 2

    正在删除的显示

    [root@master ~]# kubectl get pods
    NAME                          READY   STATUS             RESTARTS   AGE
    apache-594d8494b4-s6dfd       0/1     ImagePullBackOff   0          29m
    deploy-web-79df5694b9-2sh6d   0/1     Terminating        0          3m25s
    deploy-web-79df5694b9-5lvqk   0/1     Terminating        0          3m25s
    
    • 1
    • 2
    • 3
    • 4
    • 5
    [root@master ~]# kubectl get pods
    NAME                      READY   STATUS             RESTARTS   AGE
    apache-594d8494b4-s6dfd   0/1     ImagePullBackOff   0          29m
    nginx-6799fc88d8-nbgc2    1/1     Running            0          35h
    
    • 1
    • 2
    • 3
    • 4

    实时监控拉取镜像的状态

    [root@master ~]# kubectl get pods -w
    
    • 1

    暴露一个项目。让外部可以访问

    [root@master ~]# kubectl expose deployment deploy-web --port=80 --protocol=TCP
    service/deploy-web exposed
    [root@master ~]# kubectl get service
    NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
    deploy-web   ClusterIP   10.110.221.73   <none>        80/TCP         12s
    kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        36h
    nginx        NodePort    10.110.131.88   <none>        80:32287/TCP   35h
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    // 查看所有的资源信息
    # kubectl get all
    # kubectl get --all-namespaces
    
    // 查看pod列表
    # kubectl get pod
    
    // 显示pod节点的标签信息
    # kubectl get pod --show-labels
    
    // 根据指定标签匹配到具体的pod
    # kubectl get pods -l app=example
    
    // 查看node节点列表
    # kubectl get node
    
    // 显示node节点的标签信息
    # kubectl get node --show-labels
    
    // 查看pod详细信息,也就是可以查看pod具体运行在哪个节点上(ip地址信息)
    # kubectl get pod -o wide
    
    // 查看服务的详细信息,显示了服务名称,类型,集群ip,端口,时间等信息
    # kubectl get svc
    # kubectl get svc -n kube-system
    
    // 查看命名空间
    # kubectl get ns
    # kubectl get namespaces
    
    // 查看所有pod所属的命名空间
    # kubectl get pod --all-namespaces
    
    // 查看所有pod所属的命名空间并且查看都在哪些节点上运行
    # kubectl get pod --all-namespaces  -o wide
    
    // 查看目前所有的replica set,显示了所有的pod的副本数,以及他们的可用数量以及状态等信息
    # kubectl get rs
    
    // 查看已经部署了的所有应用,可以看到容器,以及容器所用的镜像,标签等信息
    # kubectl get deploy -o wide
    # kubectl get deployments -o wide
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    run命令

    语法:

    run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...]
    
    • 1
    // 示例,运行一个名称为nginx,副本数为3,标签为app=example,镜像为nginx:1.10,端口为80的容器实例
    
    # kubectl run nginx --replicas=3 --labels="app=example" --image=nginx:1.10 --port=80
    // 示例,运行一个名称为nginx,副本数为3,标签为app=example,镜像为nginx:1.10,端口为80的容器实例,并绑定到k8s-node1上
    # kubectl run nginx --image=nginx:1.10 --replicas=3 --labels="app=example" --port=80 --overrides='{"apiVersion":"apps/v1","spec":{"template":{"spec":{"nodeSelector":{"kubernetes.io/hostname":"k8s-node1"}}}}}'
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    AR产业变革中的“关键先生”和“关键力量”
    WPF-控件的常用属性-单例-隧道事件
    MongoDB聚合运算符:$sampleRate
    Proteus仿真--花样流水灯(仿真文件+程序)
    自己动手实现一个深度学习算法——七、卷积神经网络
    nginx网站服务
    数据结构之时间复杂度和空间复杂度
    1.5python 文件操作_python量化实用版教程(初级)
    游戏引擎概述-Part1
    设计一个支持多版本的APP的后端服务
  • 原文地址:https://blog.csdn.net/QWQ45597316/article/details/126741963