zoukankan      html  css  js  c++  java
  • Kubernetes-常用命令

    语法:kubectl 【command】【type】【name】【flags】
     
    ①command:子命令,用于操作Kubernetes集群资源对象的命令,如create, delete, describe, get, apply等
    ②type:资源对象的类型,如pod, service, rc, deployment, node等,可以单数、复数以及简写(pod, pods, po/service,services, svc)
    ③name:资源对象的名称,不指定则返回所有,如get pod 会返回所有pod, get pod nginx, 只返回nginx这个pod
    ④flags:kubectl子命令的可选参数,例如-n 指定namespace,-s 指定apiserver的URL
     
    示例:kubectl get pod tomcat-p9x0h
    [root@k8s ~]# kubectl get pod tomcat-p9x0h
    NAME           READY     STATUS    RESTARTS   AGE
    tomcat-p9x0h   1/1       Running      0       1h

     一、资源对象类型列表

     1:获取命令
    kubectl explain kubectl api-resources
    名称                                      简写
    componentsstatuses                        cs
    daemonsets                                ds
    deployment                                deploy
    events                                    ev
    endpoints                                 ep
    horizontalpodautoscalers                  hpa
    ingresses                                 ing
    jobs
    limitranges                               limits
    nodes                                    no
    namspaces                                ns
    pods                                     po
    persistentvolumes                        pv
    persistentvolumeclaims                   pvc
    resourcequotas                           quota
    replicationcontrollers                   rc
    secrets
    serviceaccounts                          sa
    services                                 svc
    

    二、特殊用法

    1:查询多个Pod信息
    kubectl get pods 【pod1】【pod2】
    示例:
    [root@k8s ~]# kubectl get pods tomcat-p9x0h mysql-19h65
    NAME           READY     STATUS    RESTARTS   AGE
    tomcat-p9x0h   1/1       Running      0       1h
    mysql-19h65    1/1       Running      0       2h
    

     2:同时查询pod、rc信息

    kubectl get pod/pod1 rc/rc1
    示例:
    [root@k8s ~]# kubectl get pod/tomcat-p9x0h rc/mysql
    NAME              READY     STATUS    RESTARTS   AGE
    po/tomcat-p9x0h    1/1      Running      0       1h
    
    NAME       DESIRED   CURRENT   READY     AGE
    rc/mysql     1         1         1       2h
    

     3:同时创建rc、svc

    kubectl create -f 【rc1.yaml】-f 【service1.yaml】
    示例:
    [root@k8s ~]# kubectl create -f mysql-rc.yaml -f mysql-svc.yaml 
    replicationcontroller "mysql" created
    service "mysql" created
    
    三、kubectl子命令
     
    主要包括对资源的创建、删除、查看、修改、配置、运行等
     
    1:查看所有子命令
    kubectl --help
     
    2:kubectl参数
    kubectl options 可以查看支持的参数,例如--namespace指定所在namespace
     
    3:kubectl输出格式
    kubectl命令可以用多种格式对结果进行显示,输出格式通过-o参数指定:-o支持的格式有
    输出格式                                              说明
    custom-columns=<spec>                 根据自定义列名进行输出,逗号分隔
    custom-columns-file=<filename>        从文件中获取自定义列名进行输出
    json                                  以JSON格式显示结果
    jsonpath=<template>                   输出jasonpath表达式定义的字段信息
    jasonpath-file=<filename>             输出jsonpath表达式定义的字段信息,来源于文件
    name                                  仅输出资源对象的名称
    wide                                  输出更多信息,比如会输出node名
    yaml                                  以yaml格式输出
    
    2:举例
    kubectl get pod -o wide
    kubectl get pod -o yaml
    kubectl get pod -o custom-columns=NAME:.metadata.name,RESC:.metadata.resourceVersion
    kubectl get pod --sort-by=.metadata.name //name排序
     
    四、创建资源对象
     
    1:根据yaml文件创建service和rc
    kubectl create -f 【rc-yaml-name】 -f 【svc-yaml-name】
    示例
    [root@k8s ~]# kubectl create -f mysql-rc.yaml -f mysql-svc.yaml 
    replicationcontroller "mysql" created
    service "mysql" created
    

    2:可以指定一个目录,这样可以一次性根据该目录下所有yaml或json文件定义资源

    kubectl create -f 【directory】
    示例
    [root@k8s ~]# kubectl create -f /data/k8s-yaml-root/
    replicationcontroller "mysql" created
    service "mysql" created
    
    五、查看资源对象
     
    1:查看所有pod
    kubectl get pods
    示例:
    [root@k8s ~]# kubectl get pods
    NAME           READY     STATUS    RESTARTS   AGE
    mysql-512rz    1/1       Running   0          2m
    mysql-5kmht    1/1       Running   0          2m
    tomcat-p9x0h   1/1       Running   0          2h
    

     2:查看rc和service

    kubectl get rc,svc
    示例:
    [root@k8s ~]# kubectl get rc,svc
    NAME       DESIRED   CURRENT   READY     AGE
    rc/mysql   10        10        10        4m
    
    NAME             CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
    svc/kubernetes   10.254.0.1       <none>        443/TCP          4h
    svc/mysql        10.254.244.102   <none>        3306/TCP         4m
    svc/tomcat       10.254.250.150   <nodes>       8080:30001/TCP   2h
    
    六、描述资源对象
     
    1:显示node的详细信息
    kubectl describe nodes 【node-name】
    示例:
    [root@k8s ~]# kubectl describe nodes 127.0.0.1
    Name:			127.0.0.1
    Role:			
    Labels:			beta.kubernetes.io/arch=amd64
    			beta.kubernetes.io/os=linux
    			kubernetes.io/hostname=127.0.0.1
    Taints:			<none>
    CreationTimestamp:	Fri, 29 Nov 2019 05:46:33 +0800
    Phase:			
    Conditions:
      Type			Status	LastHeartbeatTime			LastTransitionTime			Reason				Message
      ----			------	-----------------			------------------			------				-------
      OutOfDisk 		False 	Fri, 29 Nov 2019 09:47:58 +0800 	Fri, 29 Nov 2019 05:46:33 +0800 	KubeletHasSufficientDisk 	kubelet has sufficient disk space available
      MemoryPressure 	False 	Fri, 29 Nov 2019 09:47:58 +0800 	Fri, 29 Nov 2019 05:46:33 +0800 	KubeletHasSufficientMemory 	kubelet has sufficient memory available
      DiskPressure 		False 	Fri, 29 Nov 2019 09:47:58 +0800 	Fri, 29 Nov 2019 05:46:33 +0800 	KubeletHasNoDiskPressure 	kubelet has no disk pressure
      Ready 		True 	Fri, 29 Nov 2019 09:47:58 +0800 	Fri, 29 Nov 2019 05:46:33 +0800 	KubeletReady 			kubelet is posting ready status
    Addresses:		127.0.0.1,127.0.0.1,127.0.0.1
    Capacity:
     alpha.kubernetes.io/nvidia-gpu:	0
     cpu:					1
     memory:				2902952Ki
     pods:					110
    Allocatable:
     alpha.kubernetes.io/nvidia-gpu:	0
     cpu:					1
     memory:				2902952Ki
     pods:					110
    System Info:
     Machine ID:			c1cc26a06e9e405aa56fa81c7fcc0ca7
     System UUID:			564DEF43-F784-4106-FBC8-E81C9DC9216F
     Boot ID:			9df7d476-41e9-412d-bde4-9b9ba119ba25
     Kernel Version:		3.10.0-123.el7.x86_64
     OS Image:			CentOS Linux 7 (Core)
     Operating System:		linux
     Architecture:			amd64
     Container Runtime Version:	docker://1.13.1
     Kubelet Version:		v1.5.2
     Kube-Proxy Version:		v1.5.2
    ExternalID:			127.0.0.1
    Non-terminated Pods:		(11 in total)
      Namespace			Name			CPU Requests	CPU Limits	Memory Requests	Memory Limits
      ---------			----			------------	----------	---------------	-------------
      default			mysql-05ktg		0 (0%)		0 (0%)		0 (0%)		0 (0%)
      default			mysql-5tvkd		0 (0%)		0 (0%)		0 (0%)		0 (0%)
      default			mysql-dccp5		0 (0%)		0 (0%)		0 (0%)		0 (0%)
      default			mysql-f3195		0 (0%)		0 (0%)		0 (0%)		0 (0%)
      default			mysql-h6h4h		0 (0%)		0 (0%)		0 (0%)		0 (0%)
      default			mysql-hbhhl		0 (0%)		0 (0%)		0 (0%)		0 (0%)
      default			mysql-hws8f		0 (0%)		0 (0%)		0 (0%)		0 (0%)
      default			mysql-jt4sf		0 (0%)		0 (0%)		0 (0%)		0 (0%)
      default			mysql-m8z1d		0 (0%)		0 (0%)		0 (0%)		0 (0%)
      default			mysql-xkgcn		0 (0%)		0 (0%)		0 (0%)		0 (0%)
      default			tomcat-c5995		0 (0%)		0 (0%)		0 (0%)		0 (0%)
    Allocated resources:
      (Total limits may be over 100 percent, i.e., overcommitted.
      CPU Requests	CPU Limits	Memory Requests	Memory Limits
      ------------	----------	---------------	-------------
      0 (0%)	0 (0%)		0 (0%)		0 (0%)
    Events:
      FirstSeen	LastSeen	Count	From			SubObjectPath	Type		Reason			Message
      ---------	--------	-----	----			-------------	--------	------			-------
      32m		32m		1	{kubelet 127.0.0.1}			Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-vgtbf_default(ae73965a-1245-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy.
      32m		32m		2	{kubelet 127.0.0.1}			Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-twqs3_default(ae73c4c4-1245-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy.
      32m		32m		2	{kubelet 127.0.0.1}			Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-x61sl_default(ae7378c1-1245-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy.
      32m		32m		2	{kubelet 127.0.0.1}			Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-5kmht_default(ae7440a0-1245-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy.
      32m		32m		1	{kubelet 127.0.0.1}			Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-rp3pz_default(ae744a31-1245-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy.
      32m		32m		2	{kubelet 127.0.0.1}			Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-8znqq_default(ae73a01f-1245-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy.
      32m		32m		2	{kubelet 127.0.0.1}			Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-512rz_default(ae7386c6-1245-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy.
      32m		32m		2	{kubelet 127.0.0.1}			Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-6vf6j_default(ae73b850-1245-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy.
      32m		32m		2	{kubelet 127.0.0.1}			Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-cwmlr_default(ae73a8e3-1245-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy.
      32m		32m		2	{kubelet 127.0.0.1}			Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-8739b_default(ae73b0a3-1245-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy.
      28m		28m		1	{kubelet 127.0.0.1}			Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-j8s9g_default(3708c328-1246-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy.
      28m		28m		1	{kubelet 127.0.0.1}			Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-rlprq_default(376b8d4e-1246-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy.
      4m		4m		2	{kubelet 127.0.0.1}			Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-hbhhl_default(b0441080-1249-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy.
      4m		4m		2	{kubelet 127.0.0.1}			Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-dccp5_default(b043a874-1249-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy.
      4m		4m		2	{kubelet 127.0.0.1}			Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-05ktg_default(b0442004-1249-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy.
      4m		4m		2	{kubelet 127.0.0.1}			Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-hws8f_default(b0441a6c-1249-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy.
      4m		4m		2	{kubelet 127.0.0.1}			Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-xkgcn_default(b04429a8-1249-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy.
      4m		4m		2	{kubelet 127.0.0.1}			Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-jt4sf_default(b0508921-1249-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy.
      4m		4m		2	{kubelet 127.0.0.1}			Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-f3195_default(b0759f67-1249-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy.
      4m		4m		2	{kubelet 127.0.0.1}			Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-5tvkd_default(b0e0a048-1249-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy.
      4m		4m		2	{kubelet 127.0.0.1}			Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. pod: "mysql-m8z1d_default(b0c00ce6-1249-11ea-ac12-000c29c9216f)". Falling back to DNSDefault policy.
      32m		4m		24	{kubelet 127.0.0.1}	
    
    2:显示pod的详细信息
    kubectl describe pods【pod-name】
    示例:
    [root@k8s ~]# kubectl describe pods mysql-f3195 
    Name:		mysql-f3195
    Namespace:	default
    Node:		127.0.0.1/127.0.0.1
    Start Time:	Fri, 29 Nov 2019 09:43:49 +0800
    Labels:		app=mysql
    Status:		Running
    IP:		172.17.0.4
    Controllers:	ReplicationController/mysql
    Containers:
      mysql:
        Container ID:	docker://25d5f66e45a3650e8dc054ab3644f73a726b008d2160c8496d72a09832242662
        Image:		mysql:5.6
        Image ID:		docker-pullable://docker.io/mysql@sha256:5345afaaf1712e60bbc4d9ef32cc62acf41e4160584142f8d73115f16ad94af4
        Port:		3306/TCP
        State:		Running
          Started:		Fri, 29 Nov 2019 09:44:03 +0800
        Ready:		True
        Restart Count:	0
        Volume Mounts:	<none>
        Environment Variables:
          MYSQL_ROOT_PASSWORD:	123456
    Conditions:
      Type		Status
      Initialized 	True 
      Ready 	True 
      PodScheduled 	True 
    No volumes.
    QoS Class:	BestEffort
    Tolerations:	<none>
    Events:
      FirstSeen	LastSeen	Count	From			SubObjectPath		Type		Reason			Message
      ---------	--------	-----	----			-------------		--------	------			-------
      3m		3m		1	{default-scheduler }				Normal		Scheduled		Successfully assigned mysql-f3195 to 127.0.0.1
      3m		3m		2	{kubelet 127.0.0.1}				Warning		MissingClusterDNS	kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. Falling back to DNSDefault policy.
      3m		3m		1	{kubelet 127.0.0.1}	spec.containers{mysql}	Normal		Pulled			Container image "mysql:5.6" already present on machine
      3m		3m		1	{kubelet 127.0.0.1}	spec.containers{mysql}	Normal		Created			Created container with docker id 25d5f66e45a3; Security:[seccomp=unconfined]
      3m		3m		1	{kubelet 127.0.0.1}	spec.containers{mysql}	Normal		Started			Started container with docker id 25d5f66e45a3
    

     3:显示deployment管理的pod信息

    kubectl describe pods 【deployment-name】
     
    七、删除资源对象
     
    1:基于yaml文件删除,-f指定文件
    kubectl delete -f 【pod.yaml】
    示例:
    [root@k8s ~]# kubectl delete -f mysql-rc.yaml 
    replicationcontroller "mysql" deleted
    [root@k8s ~]# kubectl get rc
    NAME      DESIRED   CURRENT   READY     AGE
    tomcat    1         1         1         2h
    

     2:删除所有包含某个label的pod和service

    kubectl delete po,svc -l name=【lable-name】
    示例:
    [root@k8s ~]# kubectl delete po,svc -l app=mysql
    pod "mysql-0f7b6" deleted
    pod "mysql-0fs9s" deleted
    pod "mysql-1zmvc" deleted
    pod "mysql-9d6vk" deleted
    pod "mysql-gbtvh" deleted
    

     3:删除所有pod

    kubectl delete pods --all
    示例:
    [root@k8s ~]# kubectl delete pods --all
    pod "mysql-512rz" deleted
    pod "mysql-5kmht" deleted
    pod "tomcat-p9x0h" deleted
    
    八、执行容器的命令
     
    1:指定pod的某个容器执行命令
    kubectl exec 【pod-name】 uname
    示例:
    [root@k8s ~]# kubectl exec mysql-0f7b6 uname
    Linux
    

     2:进入到pod的容器里

    kubectl exec-it 【pod-name】 bash

    示例:
    [root@k8s ~]# kubectl exec -it mysql-0f7b6 bash
    root@mysql-0f7b6:/# ls
    bin  boot  dev	docker-entrypoint-initdb.d  entrypoint.sh  etc	home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    
    九、查看日志命令
     
    1:查看某个容器日志
    kubectl logs 【pod-name】
    示例:
    [root@k8s ~]# kubectl logs mysql-0f7b6 
    2019-11-29 01:19:10+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.6.46-1debian9 started.
    2019-11-29 01:19:10+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
    2019-11-29 01:19:10+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.6.46-1debian9 started.
    2019-11-29 01:19:10+00:00 [Note] [Entrypoint]: Initializing database files
    2019-11-29 01:19:11 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
    2019-11-29 01:19:11 0 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
    2019-11-29 01:19:11 0 [Note] /usr/sbin/mysqld (mysqld 5.6.46) starting as process 47 ...
    2019-11-29 01:19:11 47 [Note] InnoDB: Using atomics to ref count buffer pool pages
    

     2:动态查看日志,类似于tail-f

    kubectl logs -f 【pod-name】
    示例:
    [root@k8s ~]# kubectl logs -f  mysql-0f7b6 
    2019-11-29 01:20:40 1 [Warning] 'proxies_priv' entry '@ root@mysql-0f7b6' ignored in --skip-name-resolve mode.
    2019-11-29 01:20:41 1 [Note] Event Scheduler: Loaded 0 events
    2019-11-29 01:20:41 1 [Note] mysqld: ready for connections.
    Version: '5.6.46'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server (GPL)
    
    
  • 相关阅读:
    地区表设计(包括数据插入) Dear
    本博客的内容
    linux msn
    相关的一些技术
    相关的一些产品
    考第一名的学生的发言
    AIX&LINUX操作系统调优
    shell for循环
    自动化测试
    DB2数据库日志
  • 原文地址:https://www.cnblogs.com/douyi/p/11980060.html
Copyright © 2011-2022 走看看