k8s命令详解
kubernetes k8s kubernetes 1

kubeadm命令

kubeadm init        启动一个kubernetes主节点
kubeadm join        启动一个kubernetes工作节点并且将其加入到集群
kubeadm upgrade     更新一个kubernetes集群到新版本
kubeadm config      如果使用kubeadm1.7或者更低的版本,需要对集群做一些配置以便使用kubeadm upgrade命令
kubeadm token       使用kubeadm join 来管理令牌,https
kubeadm version     打印版本
kubeadm reset       还原之前使用kubeadm init或者kubeadm join 对节点产生改变

kubectl命令

kubectl控制Kubernetes集群管理器

格式:

kubectl [command] [TYPE] [NAME] [flags] 
​
  说明: 
  1、command:指定在一个或多个资源上要执行的操作。例如:create、get、describe、delete、apply 等
  2、TYPE:指定资源类型(如:pod、node、services、deployments等)。资源类型大小写敏感,可以指 定单数、复数或缩写形式。 
  3、NAME:指定资源的名称。名称大小写敏感。如果省略名称空间,则显示默认名称空间资源的详细信息或者 提示:No resources found in default namespace.。 
  4、flags:指定可选的标记。例如,可以使用-s或--server标识来指定Kubernetes API服务器的地 址和端口;-n指定名称空间;等等。 
  注意:你从命令行指定的flags将覆盖默认值和任何相应的环境变量。优先级最高。 
  5、在多个资源上执行操作时,可以通过类型 [TYPE] 和名称 [NAME] 指定每个资源,也可以指定一个或多 个文件。 
  
例:
  kubectl get svc,node 
  kubectl get pod -n kube-system podname podname 
  kubectl get pod -f file1 -f file2 -f file

基本命令

create

从一个文件创建一个资源对象,就是yml文件创建pod。

生产中不用create,因为不能更新。

格式:
  kubectl create [参数] [--image=镜像名]
  参数:
    -f 文件名.yml         #指定文件启动pod
    ns ns名             #创建一个名称空间
    deployment pod名 [类别]    #生成一个以pod名加哈希值的pod,标签默认为app=pod名
    configmap [对象名] [类别]   #创建资源对象
          类别:
              --from-file     #基于某个文件的方式创建环境变量,可以是目录,可以是文件。
              --from-literal    #基于键值对的方式创建环境变量
         secret generic [对象名] [类别]      #通过generic类型创建了一个加密的资源对象(base64 -d解密)
          类别:
            --from-file     #基于某个文件的方式创建环境变量,可以是目录,可以是文件。
              --from-literal    #基于键值对的方式创建环境变量
         secret tls [对象名] [类别]    #通过tls类型创建了一个加密的资源对象(base64 -d解密)
          类别:
            --key       #证书中的.key
            --cert        #证书中的.crt
例:
  kubectl create -f nginx1-pod.yml
  kubectl create ns linux37     #创建名称空间名为linux37
  kubectl create configmap zhao --from-literal=name=zhengwen    #基于键值对的方式创建以zhao命名的环境变量
  kubectl create configmap nginx_conf --from-file=/data/nginx.conf  #基于文件创建nginx_conf命名的环境变量
  kubectl create secret generic mysql --from-literal=username=root #基于键值对的方式创建加密的信息,root四个字母加密
  kubectl create secret tls nginx-ssl --key=./nginx.key --cert=./nginx.crt  #把nginx证书创建成了资源对象
  kubectl create deployment nginx --image=nginx:1.20    #创建了以nignx加哈希值的pod,默认加入标签app=nginx

expose

Take a replication controller, service, deployment or pod and expose it as a new Kubernetes Service

run

创建和运行pod

生产不用此方式。

格式:
  kubectl run [pod名] [参数]
  参数:
    --image=镜像:tag      #指定容器,可以是自己harbor中的镜像
    
例:
  kubectl run nginx --image=nginx:1.20

set

设置对象的特定特性

explain

文档的参考资料, 通过yml文件创建pod,expose是可以看到yml文件里边需要什么参数

格式:
  kubectl explain pod
例:
  kubectl explain pod
  kubectl explain pod.kind      #可以这样一级一级往下查下去

get

显示一个或多个资源信息

格式:
  kubectl get [类型] [选项]
  类型:
    pods  #显示容器
    node  #显示node节点
    ns    #显示命名空间
    pv    #显示pv资源
    all   #所有的
    configmap #显示资源对象
    secrets   #显示加密的资源对象
    endpoints #显示集群信息
    deployment  #pod控制器,创建Deployment时也会创建一个RS
    replicaset  #pod控制器RS 
  选项:
    -o 
      wide  #长格式显示
      yaml  #通过yml格式显示信息
      json  #通过js格式显示信息
    -w      #一直显示,实时更新,监控资源变化
    -n      #指定要显示的名称空间
    --show-labels=true    #显示标签信息
    -l 标签名=标签
例:
  kubectl get pods nginx -o yaml    #获取nginx的yml信息
  kubectl get pods -o wide -w     #一直监控pods信息,默认是default名称空间中的
  kubectl get ns             #显示所有的名称空间
  kubectl get pods -n kube-system   #显示kube-system名称空间中的pods
  kubectl get pods -o wide --show-labels=true   #长格式显示并显示标签
  kubectl get pods -l k8s-app=kube-proxy -n kube-system #过滤除标签名k8s-app=kube-proxy的标签

edit

在服务器上编辑资源,类似vim,修改完成后:wq保存

格式:
  kubectl edit [类型] [参数] [类型2]
  类型:
    pod   #pod
    
  参数:
    pod名  #通过类型修改pod参数
    
  类型2:
    -n 命名空间   #命名空间
例:
  kubectl edit pod nginx    #通过类型修改nginx参数,wq退出保存

delete

按文件名、标准输入、资源和名称或按资源和标签选择器删除资源

格式:
  kubectl delete [类型] [参数]
  类型:
    node      #node节点
    pod       #pod
    ns        #名称空间
  参数:
    -f 文件名.yml    #通过yml文件删除
    pod名       #通过类型删除指定pod。
    node节点名     #通过类型删除指定node。
    ns名        #删除名称空间
    -l 标签名=标签    #通过标签过滤
    
例:
  kubectl delete pod nginx      #通过pod名删除
  kubectl delete -f nginx-pod.yml    #通过yml文件删除,yml文件不会删除
  kubectl delete ns demo        #删除demo名称空间,不要轻易删除名称空间,删除名称空间会把里边的资源对象也删除

部署命令

rollout

暂停和恢复deployment的更新

格式:
  kubectl rollout [参数] deployment [名称]
  类型:
    pause     # 暂停更新
    resume      # 恢复更新
  名称:
    deployment名

scale

扩容。设置一个新的个数

格式: 
  kubectl scale deployment [类型] [参数]
  类型:
    pod       #pod
    replicaset    #pod控制器
  参数:
    --replicas    #指定扩容数量
    
例:
  kubectl scale deployment nginx --replicas=3   #扩容3个nginx的pod

autoscale

自动扩展部署

集群管理命令

certificate

修改资源对象证书

cluster-info

查看集群状态

格式:
  kubectl cluster-info
  
例:
root@k8s-master1:/apps/kubectl_yml# kubectl cluster-info
Kubernetes control plane is running at https://192.168.66.103:6443
CoreDNS is running at https://192.168.66.103:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
​
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

top

查看资源对象CPU/内存信息,需要装组件(Metrics)

格式:
  kubectl top pods [参数] [可选项]
  
  参数:
    pod      #查看pod CPU/内存信息。
    node     #查看node CPU/内存信息。
  可选项:
    pod名    # 查看指定pod名 CPU/内存信息。

cordon

打标签,打不可调度标签

格式:
  kubectl cordon [参数]
  
  参数:
    node名   #将本机器作为可以让pod节点运行的机器

uncordon

打标签,打可调度标签,新的pod不可以来

格式:
  kubectl uncordon [参数]
  
  参数:
    node名   #将本机器作为不可以让pod节点运行的机器

drain

驱逐当前node机器上的pod,为打不可调度标签做准备。先设置不可调度,在进行驱逐

格式:
  kubectl drain [参数]
  
  参数:
    node名   #将本机器运行的pod驱逐到可调度机器上去

taint

更新一个或多个节点上的污点

故障处理和Debugging命令

describe

显示特定资源或一组资源的详细信息,打印非常详细的信息。

格式:
  kubectl describe [类型] [参数]
  类型:
    pod     #pod
    configmap  #cm
    service   #集群
  参数:
    pod名    #显示pod名的详细信息
    -n 名称空间   #指定名称空间,因为pod在这个名称空间,不指定就找默认的default
    configmap名   #显示环境变量的的内容
    service名  #显示集群的详细信息
    
例:
  kubectl describe pod pod-halo           #查看nginx1的详细信息
  kubectl describe pod pod-halo -n linux37     #查看指定名称空间中的pod详细信息
  kubectl describe configmap zhao         #查看zhao的环境变量详细信息
  kubectl describe service demoapp-sve      #查看demoapp-sve集群的详细信息

logs

打印一个pod的日志

格式:
  kubectl logs [类型] [参数]
  类型:
    pod名      #查看指定pod名的日志
  参数:
    -n 名称空间   #pod所在的名称空间
    -f         #一直显示
例:
  kubectl logs pod-halo -n linux37
  kubectl logs pod-halo -n linux37 -f   #一直显示日志

attach

进入容器,生产不用,进入容器后在退出pod就消失了。

exec

进入pod或直接执行命令

格式:
  kubectl exec [pod名] [参数] -- [命令]
  参数:
    -n 名称空间     #pod所在的名称空间
    -c 容器名       #指定pod中的容器名,一个pod中多个容器时可以用到
  
例:
  kubectl exec -ti nginx /bin/sh                 #进入nginx的pod中
  kubectl exec pod-halo -n linux37 -- ifconfig      #在pod-halo的pod中执行命令
 或 kubectl exec -ti pod-halo -n linux37 ifconfig      #一样的效果,但需要给一个终端
  kubectl exec pod-halo -n linux37 -c halo -- ifconfig

port-forward

转发一个或多个本地端口到pod,很少用

proxy

启动一个临时apiservice,ctrl+c就退出结束了,默认启动8001,http协议

格式:
  kubectl proxy

cp

从容器中复制文件和目录到本机。

用于pod和外部的文件交换,将文件和目录复制到容器或从容器复制到容器。

格式:
  kubectl cp [文件/目录] [参数] 
  参数:
    -c, --container='':容器名称。如果省略,将选择pod中的第一个容器
    --no-preserve=false:复制的文件/目录的所有权和权限将不会保留在容器中
例:
  将“/tmp/foo_dir”本地目录拷贝到默认命名空间的远端pod的“/tmp/bar_dir”目录下
    kubectl cp /tmp/foo_dir pod名:/tmp/bar_dir
    
  复制/tmp/foo本地文件到/tmp/bar在远程pod在一个特定的容器
    kubectl cp /tmp/foo <some-pod>:/tmp/bar -c <specific-container>
    
  将/tmp/foo文件拷贝到远程pod中的/tmp/bar目录下
    kubectl cp /tmp/foo <some-namespace>/<some-pod>:/tmp/bar
    
  从远程pod拷贝/tmp/foo到本地/tmp/bar
    kubectl cp <some-namespace>/<some-pod>:/tmp/foo /tmp/bar
    
  复制文件到pod的指定目录,也可从容器中复制文件到外部
    kubectl cp fileName podName:/fileName

先进的命令

diff

对比当前运行的pod和执行的yml文件对比

格式:
  kubectl diff [参数]
  参数:
    -f yml文件  #yml文件对pod
    
例:
  kubectl diff -f nginx.yml   #对比nginx.yml文件和apiserver中的文件,标记出不同地方。+不同区别,-同样的

apply

通过文件名或标准输入对资源的配置。

格式:
  kubectl apply [参数]
  参数:
    -f 文件名.yml      #通过文件名创建pod
例:
  kubectl apply -f nginx.yml    #启动nginx.yml的pod

patch

打补丁,也是修改,和edit一样

replace

修改文件副本

kustomize

Build a kustomization target from a directory or URL.

设置命令

label

设置标签,修改或创建一个标签。

格式:
  kubectl label [选项] [类型] [参数] 标签名=标签值
  选项:
    --overwrite   #对已经存在的标签进行修改
  类型:
    pod   #修改pod的标签
    node  # node节点
  参数:
    pod名  #指定要修改的pod名
    node节点名 #指定要修改的node节点名
    
例:
  kubectl label --overwrite pod nginx1 app=nginx2   #对nginx标签已经存在的标签进行修改

annotate

Update the annotations on a resource

completion

输出指定shell的shell完成代码(bash或zsh)

其他命令

api-resources

打印服务器上支持的API资源

api-versions

在服务器上以“组/版本”的形式打印支持的API版本

config

修改kubeconfig文件

plugin

插件

格式:
  kubectl plugin [参数]
例:
  kubectl plugin list   #查看本机装有那些插件

version

版本信息

格式:
  kubectl version


k8s命令详解
https://zzwen.cn/archives/k8sming-ling-xiang-jie
作者
Administrator
发布于
更新于
许可