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个常见面试题
点亮,服务器三年不宕机