Files
docker_practice/14_kubernetes_setup/14.8_kubectl.md
T

311 lines
6.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 14.8 Kubernetes 命令行 kubectl
[kubectl](https://github.com/kubernetes/kubernetes) 是 Kubernetes 自带的客户端,可以用它来直接操作 Kubernetes。
kubectl 的基本用法格式为
```bash
kubectl [command] [resource] [name] [flags]
```
其中 `command` 是操作命令 getapplydelete),`resource` 是资源类型 poddeploymentservice),`name` 是资源名称可选),`flags` 是各种选项参数
### 14.8.1 get
显示一个或多个资源最常用的命令之一用于查询集群中的资源状态
```bash
# 查看所有 Pod
$ kubectl get pods
# 查看指定命名空间中的 Deployment
$ kubectl get deployment -n kube-system
# 查看所有资源
$ kubectl get all
# 使用更详细的输出格式
$ kubectl get pods -o wide
# 输出为 YAML 格式
$ kubectl get pod my-pod -o yaml
# 根据标签选择资源
$ kubectl get pods -l app=nginx
```
### 14.8.2 describe
显示资源的详细信息包括事件状态配置等用于调试和查看资源的完整信息
```bash
# 查看特定 Pod 的详情
$ kubectl describe pod my-pod
# 查看 Node 的详情
$ kubectl describe node node-1
# 查看 Deployment 的详情
$ kubectl describe deployment nginx-deployment
```
### 14.8.3 apply
从文件或标准输入应用配置这是声明式资源管理的标准方式可用于创建或更新资源
```bash
# 应用 YAML 文件
$ kubectl apply -f deployment.yaml
# 应用目录中的所有 YAML 文件
$ kubectl apply -f ./manifests/
# 从标准输入应用配置
$ cat deployment.yaml | kubectl apply -f -
```
### 14.8.4 create
从文件或标准输入创建资源 apply 不同create 仅用于创建新资源如果资源已存在会报错
```bash
# 创建资源
$ kubectl create -f pod.yaml
# 从标准输入创建
$ kubectl create -f - < deployment.yaml
```
### 14.8.5 delete
删除一个或多个资源支持按名称标签资源类型等多种方式删除
```bash
# 按名称删除
$ kubectl delete pod my-pod
# 删除整个 Deployment(同时删除其管理的 Pod
$ kubectl delete deployment nginx-deployment
# 按标签删除
$ kubectl delete pods -l app=nginx
# 从文件删除
$ kubectl delete -f deployment.yaml
```
### 14.8.6 logs
查看 Pod 中容器的日志用于调试应用和查看容器输出
```bash
# 查看 Pod 的日志
$ kubectl logs my-pod
# 查看 Pod 中特定容器的日志
$ kubectl logs my-pod -c container-name
# 实时跟踪日志(类似 tail -f)
$ kubectl logs -f my-pod
# 查看最近 100 行日志
$ kubectl logs my-pod --tail=100
# 查看 Pod 启动前的日志(适用于已崩溃的容器)
$ kubectl logs my-pod --previous
```
### 14.8.7 exec
在运行中的容器内部执行命令用于调试排查问题或执行应用内的操作
```bash
# 进入容器的交互式 shell
$ kubectl exec -it my-pod -- /bin/sh
# 在容器中执行命令
$ kubectl exec my-pod -- ls -la /app
# 在 Pod 中的特定容器执行命令
$ kubectl exec -it my-pod -c container-name -- /bin/bash
```
### 14.8.8 port-forward
将本地端口转发到 Pod 的端口用于本地访问集群内的服务无需暴露 Service
```bash
# 将本地 8080 端口转发到 Pod 的 80 端口
$ kubectl port-forward pod/my-pod 8080:80
# 使用随机本地端口
$ kubectl port-forward pod/my-pod :80
# 转发到 Service
$ kubectl port-forward svc/my-service 8080:80
```
### 14.8.9 rollout
DeploymentDaemonSetStatefulSet 等资源执行滚动更新暂停继续或回滚操作
```bash
# 查看滚动更新状态
$ kubectl rollout status deployment/nginx-deployment
# 暂停滚动更新
$ kubectl rollout pause deployment/nginx-deployment
# 继续滚动更新
$ kubectl rollout resume deployment/nginx-deployment
# 查看更新历史
$ kubectl rollout history deployment/nginx-deployment
# 回滚到前一个版本
$ kubectl rollout undo deployment/nginx-deployment
# 回滚到特定版本
$ kubectl rollout undo deployment/nginx-deployment --to-revision=2
```
### 14.8.10 label
向资源添加修改或删除标签标签用于组织和选择资源
```bash
# 为 Pod 添加标签
$ kubectl label pod my-pod env=production
# 修改已有标签
$ kubectl label pod my-pod env=staging --overwrite
# 删除标签
$ kubectl label pod my-pod env-
# 为多个资源添加标签
$ kubectl label pods -l app=nginx version=v1
```
### 14.8.11 annotate
向资源添加或修改注解注解用于存储任意元数据不用于资源选择
```bash
# 添加注解
$ kubectl annotate pod my-pod description=”Production pod”
# 修改注解
$ kubectl annotate pod my-pod description=”Staging pod” --overwrite
# 删除注解
$ kubectl annotate pod my-pod description-
```
### 14.8.12 edit
直接编辑 Kubernetes 资源编辑器由 `EDITOR` 环境变量指定
```bash
# 编辑 Pod
$ kubectl edit pod my-pod
# 编辑 Deployment
$ kubectl edit deployment nginx-deployment
```
### 14.8.13 config
管理 kubectl 的配置文件通常位于 `~/.kube/config`)。
```bash
# 查看当前配置
$ kubectl config view
# 切换上下文
$ kubectl config use-context my-cluster
# 查看所有上下文
$ kubectl config get-contexts
# 设置默认命名空间
$ kubectl config set-context --current --namespace=my-namespace
```
### 14.8.14 cluster-info
显示集群的连接信息和组件状态
```bash
# 显示集群信息
$ kubectl cluster-info
# 显示完整的集群状态(包括所有组件)
$ kubectl get componentstatuses
```
### 14.8.15 version
显示 kubectl 客户端和 Kubernetes API server 的版本信息
```bash
# 显示版本
$ kubectl version
# 仅显示客户端版本
$ kubectl version --client
# 以 JSON 格式输出
$ kubectl version --output=json
```
### 14.8.16 api-versions
列出 API server 支持的所有 API 版本格式为 /版本”。
```bash
$ kubectl api-versions
```
### 14.8.17 explain
解释资源的字段含义用于了解 YAML 配置文件中各字段的作用
```bash
# 查看 Pod 资源的字段说明
$ kubectl explain pod
# 查看 Pod 下 spec 字段的说明
$ kubectl explain pod.spec
# 查看具体字段的详细说明
$ kubectl explain pod.spec.containers
```
### 14.8.18 auth
检查用户权限用于验证 RBAC 配置
```bash
# 检查当前用户是否有权限执行操作
$ kubectl auth can-i create pods
# 检查特定用户的权限
$ kubectl auth can-i create pods --as=other-user
```
### 14.8.19 help
显示任何命令的帮助信息
```bash
# 显示 kubectl 的一般帮助
$ kubectl help
# 显示特定命令的帮助
$ kubectl get --help
# 显示资源的 API 文档
$ kubectl explain deployment
```