K8s Kubectl集群管理工具使用技巧
kubectl是Kubernetes命令行管理工具,可以使用它部署、查看和管理集群所有资源。
    作为一名K8s运维工程师,必须要熟悉它,下面总结一些kubectl常用的命令示例,供大家练习~
  
创建资源
    创建命名空间:使用 
    
      kubectl create namespace
    
     命令可以创建新的命名空间。
  
      kubectl create namespace my-namespace
    
  
    使用 
    
      kubectl apply
    
     命令创建资源对象:使用 
    
      kubectl apply
    
     命令可以从配置文件中创建或更新资源对象。
  
    
          kubectl apply -f my-pod.yaml
kubectl apply -f my-deployment.yaml
kubectl apply -f my-service.yaml
        
      
        
    使用 
    
      kubectl create
    
     命令创建资源对象:使用 
    
      kubectl create
    
     命令可以通过命令行参数直接创建资源对象。
  
    
          kubectl create pod my-pod --image=my-image
kubectl create deployment my-deployment --image=my-image
kubectl create service my-service --port=8080 --target-port=80
        
      
        
          
            
      
        
    从模板生成资源对象:使用 
    
      kubectl create
    
     命令结合 
    
      --dry-run=client -o yaml
    
     选项可以从模板生成资源对象的配置文件,并进行进一步修改或保存。
  
    
          kubectl create pod my-pod --image=my-image --dry-run=client -o yaml > my-pod.yaml
kubectl create deployment my-deployment --image=my-image --dry-run=client -o yaml > my-deployment.yaml
kubectl create service my-service --port=8080 --target-port=80 --dry-run=client -o yaml > my-service.yaml
        
      查看资源
    查看所有资源对象:使用
    
      kubectl get
    
    命令可以列出当前命名空间中的所有资源对象。
  
    
          kubectl get all
        
      
        
查看特定类型的资源:
    
          kubectl get pods
kubectl get deployments
kubectl get services
        
      
        
    查看所有命名空间中的资源:使用
    
      --all-namespaces
    
    选项可以列出所有命名空间中的资源对象。
  
    
          kubectl get all --all-namespaces
        
      
        
    使用标签过滤资源:使用
    
      -l
    
    选项可以根据标签过滤资源对象。
  
    
          kubectl get pods -l app=my-app
kubectl get deployments -l environment=production
        
      
        
    显示资源详细信息:使用
    
      -o yaml
    
    或
    
      -o json
    
    选项可以获取资源对象的详细信息,以YAML或JSON格式显示。
  
    
          kubectl get pods   -o yaml
kubectl get services   -o json
        
      
        
          
            
      
        
    查看资源的事件日志:使用
    
      kubectl describe
    
    命令可以查看资源对象的事件日志,包括创建、更新和删除等操作的详细信息。
  
    
          kubectl describe pod name>
kubectl describe service name>  
        
      
        
    使用字段选择器显示特定字段:使用
    
      -o custom-columns
    
    选项可以选择要显示的特定字段,并按自定义列格式输出。
  
    
          kubectl get pods -o custom-columns=NAME:.metadata.name,STATUS:.status.phase
kubectl get services -o custom-columns=NAME:.metadata.name,TYPE:.spec.type
        
      修改资源
    使用 
    
      kubectl edit
    
     命令进行交互式编辑:使用 
    
      kubectl edit
    
     命令可以在默认编辑器中打开指定资源对象的配置,并进行交互式编辑。
  
    
          kubectl edit pods 
kubectl edit deployments 
kubectl edit services 
        
      
        
    直接修改原有YAML文件:使用文本编辑器编辑资源对象的YAML配置文件,并使用 
    
      kubectl apply -f
    
     命令指定配置文件将更新应用到集群中。
  
    
          kubectl apply -f my-pod.yaml
kubectl apply -f my-deployment.yaml
kubectl apply -f my-service.yaml
        
      
        
    使用 
    
      kubectl patch
    
     命令进行部分更新:使用 
    
      kubectl patch
    
     命令可以对资源对象进行部分更新,而不必修改整个配置文件。
  
    
          kubectl patch pods   --patch '{"spec": {"containers": [{"name": "my-container", "image": "new-image"}]}}'
kubectl patch deployments   --patch '{"spec": {"replicas": 3}}'
kubectl patch services   --patch '{"spec": {"type": "LoadBalancer"}}'
        
      
        
    使用标签选择器批量修改资源:使用 
    
      kubectl label
    
     命令可以使用标签选择器批量修改符合条件的资源对象的标签。
  
    
          kubectl label pods -l app=my-app new-label=value
kubectl label deployments -l environment=production new-label=value
        
      
        
    使用 
    
      kubectl annotate
    
     命令添加注释:使用 
    
      kubectl annotate
    
     命令可以为资源对象添加注释信息。
  
    
          kubectl annotate pods   description="www.aliangedu.cn"
kubectl annotate services   owner="www.aliangedu.cn"
        
      
删除资源
    删除指定类型的资源:使用 
    
      kubectl delete
    
     命令可以删除指定类型的资源对象。
  
    
          kubectl delete pods name>
kubectl delete deployments name>
kubectl delete services name>   
        
      
        
          
            
      
        
    删除所有资源对象:使用 
    
      --all
    
     选项可以删除当前命名空间中的所有资源对象。
  
      kubectl delete all --all
    
  
    删除特定命名空间中的资源:使用 
    
      -n
    
     选项可以删除指定命名空间中的资源对象。
  
    
          kubectl delete pods -n 
kubectl delete deployments -n 
kubectl delete services -n 
        
      
        
          
            
      
        
    删除符合标签选择器条件的资源:使用 
    
      -l
    
     选项可以根据标签选择器删除符合条件的资源对象。
  
    
          kubectl delete pods -l app=my-app
kubectl delete deployments -l environment=production
        
      
        
    批量删除资源对象:使用 
    
      --filename
    
     或 
    
      -f
    
     选项可以从配置文件中批量删除资源对象。
  
    
          kubectl delete -f my-pods.yaml
kubectl delete -f my-deployments.yaml
kubectl delete -f my-services.yaml
        
      
        
    删除命名空间:使用 
    
      kubectl delete namespace
    
     命令可以删除指定的命名空间及其所有相关资源对象。
  
    
          kubectl delete namespace <namespace>
        
      
        
请注意,删除操作是不可逆的,并且会立即删除资源对象。在删除资源对象之前,请确保你了解删除操作的影响,并谨慎操作。
    - END -
      
        
          
              
                
                    
                      
                        
                            
                              
                                   
                                  推荐阅读 
                                  
                                    
                                
                              
                          
                        
                      
                          
                            原来懂Kubernetes,找工作这么吃香! K8S 常用资源 YAML 详解
                            DevOps与CI/CD常见面试问题汇总
                              
我会在Docker容器中抓包了!
                              
Ansible 批量100台服务器添加 Crontab
                            19 个 K8S集群常见问题总结,建议收藏
                            运维高可用架构的 6 大常规方案
                              
运维监控指标全方面总结
                            
                                9 个实用 Shell 脚本,建议收藏!
                              
                              
                              
详解 K8S Helm CI/CD发布流程
                              
ES+Redis+MySQL,这套高可用架构设计太顶了!
                            
                                一台服务器最大能支持多少条TCP连接?
                              
                            
                                K8S运维必知必会的 Kubectl 命令总结
                              
                              
                                
                                  
                              
                            
                                16 张图硬核讲解 Kubernetes 网络
                              
                              
                                
                                  
                              
                            
                                史上最全 Jenkins Pipeline流水线详解
                              
                            Jenkins 自动化部署实例讲解,另附安装教程!
                            
                                主流监控系统 Prometheus 学习指南
                              
                            
                          
                            
                                搭建一套完整的企业级 K8s 集群(二进制方式)
                              
                              
                              
                                  40个 Nginx 常问面试题
                                
                              
                                  Linux运维工程师 50个常见面试题
                                
                              
                          
                        
                      
                  
                
            
          
      
      
            
              
                  
                      
                  点亮,服务器三年不宕机
                  
              
          
        
  
  
