kubectl知多少
kubectl 是 K8S 中的一个命令行工具,主要用于管理和操作 K8S 集群。kubectl 通过向 K8S API 发送 REST 请求,允许用户与 K8S 集群中的各种资源进行交互,例如 Pod、Service、Deployment 等。kubectl 提供了一种简单而灵活的方式来管理和操作 K8S 集群,它支持交互式和批处理操作,可以轻松地进行自动化处理。
下面是一个简单的逻辑结构图,说明 kubectl 命令如何与 K8S API Server 交互,以管理 K8S 集群中的资源。
kubectl 通过向 API Server 发送 REST API 请求来管理 K8S 集群中的资源,它接收来自 kubectl、kubelet、kube-proxy 和其他 K8S 组件的请求,并响应这些请求。
在 K8S 运维中,会经常使用kubectl,本篇梳理了kubectl常用的维护命令和选项,并按场景进行了分类。关于更多详情,可参考官方文档:https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands
获取信息
- kubectl get:获取 Kubernetes 资源的信息,例如节点、服务、Pod、配置等。
- kubectl describe:显示特定资源的详细信息。
- kubectl logs:获取 Pod 的日志。
- kubectl top:查看节点和 Pod 的 CPU 和内存使用情况。
调试和诊断
- kubectl exec:在容器中执行命令。
- kubectl port-forward:将本地端口转发到 Pod 端口。例如:
kubectl --namespace monitoring port-forward --address 0.0.0.0 svc/prometheus-k8s 9090
- kubectl run:在集群中创建一个新的 Pod,并在其中运行一个容器。
- kubectl attach:连接到正在运行的容器。
- kubectl debug:启动一个调试容器并将其连接到指定的 Pod 上。
状态管理
- kubectl create:创建 Kubernetes 资源。
- kubectl apply:对已存在的 Kubernetes 资源进行更新操作。
- kubectl delete:删除 Kubernetes 资源。
- kubectl edit:在编辑器中编辑资源配置文件。
- kubectl label:为资源添加或修改标签。
- kubectl annotate:为资源添加或修改注释。
扩缩容
- kubectl scale:扩展或缩小 Deployment、StatefulSet等的副本数。
- kubectl autoscale:创建 Horizontal Pod Autoscaler 对象,根据 CPU 或自定义指标来自动扩缩容 Pod。
部署管理
- kubectl rollout:对 Deployment、DaemonSet、StatefulSet 等进行滚动升级。
- kubectl rollout history:查看部署历史记录。
- kubectl rollout undo:回滚部署操作。
- kubectl patch:通过部分更改来更新 Kubernetes 资源。
安全和身份验证
- kubectl auth:管理身份验证和授权。
- kubectl create secret:创建用于身份验证和授权的 Kubernetes 密钥。
- kubectl certificate:管理 TLS 证书和私钥。
最后
以上就是 kubectl 常用的一些维护命令和选项,需要的朋友请收藏。关于更多详情,可直接参考官方文档:https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands
本文转载于WX公众号:不背锅运维(喜欢的盆友关注我们):https://mp.weixin.qq.com/s/pW0vxt8k1pDk0OEz5asWGQ