K8S-kubctl常用命令

kubctl命令

图来源:https://jimmysong.io/kubernetes-handbook/guide/using-kubectl.html

Kubectl 的子命令主要分为 8 个类别:

  • 基础命令(初学者都会使用的)
  • 基础命令(中级)
  • 部署命令
  • 集群管理命令
  • 故障排查和调试命令
  • 高级命令
  • 设置命令
  • 其他命令

下面列出来一些常用的:

  1. 查看集群状态:

    # 查看客户端及服务端程序版本信息
    kubectl version --short=true 
    # 查看集群信息
    kubectl cluster-info 
    
  2. 查看资源清单配置字段的解释:

    kubectl explain pods/deployments/...(二级对象可用类似于pods.spec这种方式查看)
    
  3. 创建资源对象:

    # 创建并运行一个指定的可复制的镜像。 创建一个`deployment`或者`job`来管理创建的容器。
    kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...]
    # 陈述式对象配置管理方式
    kubectl create -f **.yaml  
    # 声明式对象配置管理方式(也适用于更新等)
    kubectl apply -f **.yaml  
    # 将service暴露出去
    kubectl expose deployments/deployment_name --type="NodePort" --port=(要暴露的容器端口) --name=(Service对象名字)
    
    • kubectl create命令可创建新资源。 因此,如果再次运行该命令,则会抛出错误,因为资源名称在名称空间中应该是唯一的;
    • kubectl apply命令将配置应用于资源。 如果资源不在那里,那么它将被创建。 如果配置文件中的资源在集群中已存在,则根据配置对资源字段进行更新。
  4. 查看资源对象:

    # 查看命名空间
    kubectl get namespace 
    # 查看pod或者service,-o 输出格式 wide表示plain-text
    kubectl get pods,services -o wide 
    # -l 标签选择器(多个的话是与逻辑),-n 指定命名空间,不指定默认default
    kubectl get pod -l "key=value,key=value" -n kube-system 
    #  -l 基于集合的标签选择器, -L查询结果显示标签,注意:为了避免和shell解释器解析!,必须要为此类表达式使用单引号
    kubectl get pod -l "key1 in (val1,val2),!key2" -L key
    # -w 监视资源变动信息
    kubectl get pod -w
    
  5. 更新资源对象:

    # 进行热更新,直接编辑
    kubectl edit [pods/services/deployments/...]  name
    # apply进行更新
    kubectl apply -f **.yaml  
    # --force 如果需要基于此前的配置文件进行替换,需要加上force
    kubectl replace -f xx.yaml --force
    
  6. 删除资源对象:

    # 删除指定资源对象
    kubectl delete [pods/services/deployments/...] name 
    # 删除kube-system下指定标签的资源对象
    kubectl delete [pods/services/deployments/...] -l key=value -n kube-system  
    # 删除kube-system下所有资源对象
    kubectl delete [pods/services/deployments/...] --all -n kube-system 
    # 强制删除Terminating的资源对象
    kubectl delete [pods/services/deployments/...] source_name --force --grace-period=0 -n kube-system 
    # 删除yaml定义的资源对象
    kubectl delete -f xx.yaml
    # 一般不用这种方式删除
    kubectl apply -f xx.yaml --prune -l <labels>
    # 默认删除控制器会同时删除其管控的所有Pod对象,加上cascade=false就只删除rs
    kubectl delete rs rs_name --cascade=fale
    
  7. 查看某资源对象的配置文件:

    kubectl get source_type source_name -o yaml --export(--export表示省略由系统生成的信息) 后面加 > file.yaml就可以快速生成一个配置文件了
    
  8. 标签管理(node/pod):

    # 查看所有节点的标签
    kubectl get node --show-labels
    # 查看指定节点的标签
    kubectl get node k8s-node01 --show-labels
    # 添加节点标签
    kubectl label node k8s-node01 app=node01
    # 修改节点标签
    # kubectl label node 节点名 新的标签键值对 --overwrite=true
    kubectl label node k8s-node01 app=app01 --overwrite=true
    # 删除节点标签
    kubectl label node k8s-node01 app-
    
  9. 打印容器中日志信息:

    # -f 持续监控,-c如果pod中只有一个容器不用加
    kubectl logs name -f -c container_name -n kube-system 
    
  10. 在容器中执行命令:

# 执行命令
kubectl exec pod_name -c container_name -n kube-system -- COMMAND [args...]
# 进入容器, 如果 POD 中有多个容器,则需要 -c 指定容器名
kubectl exec pod_name [-c  container_name] -it -- /bin/sh
  1. 扩容和缩容:

    kubectl scale deployment/deployment_name --replicas=N
    # 只有当前副本数等于M时才会执行扩容或者缩容
    kubectl scale deployment/deployment_name --replicas=N --current-replicas=M 
    
  2. patch修改Deployment控制器进行控制器升级:

    # -p 以补丁形式更新补丁形式默认是json
    kubectl patch deployment deployment-demo -p '{"spec": {"minReadySeconds": 5}}'
    # 修改depolyment中的镜像文件
    kubectl set image deployments deployment-demo myapp=ikubernetes/myapp:v2 
    # 打印滚动更新过程中的状态信息
    kubectl rollout status deployment deployment-demo 
    # 监控deployment的更新过程
    kubectl get deployments deployment-demo --watch
    # 暂停更新
    kubectl kubectl rollout pause deployments deployment-demo 
    # 继续更新
    kubectl rollout resume deployments deployment-demo 
    # 查看历史版本(能查到具体的历史需要在apply的时候加上--record参数)
    kubectl rollout history deployments deployment-demo 
    # 回滚到指定版本,不加--to-version则回滚到上一个版本
    kubectl rollout undo deployments deployment-demo --to-revision=2 
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值