kubectl命令行管理工具
程序员文章站
2022-03-03 17:20:30
...
kubectl 就是 kube-apiserver 的客户端程序,是通过连接 master 节点的 apiserver 上实现各种 k8s 相关对象资源的增删改查
k8s 可管理对象资源:
pod
node
service
replicaset
deployment
statefulet
daemonset
job
conjob
1 基础命令
命令 | 描述 |
---|---|
create | 通过文件或 stdin(标准输入)创建资源kubectl create deployment my-test --image=busybox
|
expose | 将一个资源公开为一个新的 Service |
run | 在集群中运行一个特定的镜像 |
set | 在对象上设置特定的功能 |
get | 显示一个或多个资源 -n namespace:指定命名空间 -A:显示所有的命名空间中的对象(生产中慎用) kubectl get pod -A -o wide 示例: kubectl get pod -o wide -n test kubectl get nodes kubectl get deployment -o wide kubectl get svc -n kube-system kubectl get namespace
|
explain | 文档的参考资料 |
edit | 在服务器上使用默认的编辑器编辑一个资源 |
delete | 按文件名、标准输入、资源和名称删除资源,或按资源和标签选择器删除资源 |
2 部署命令
命令 | 描述 |
---|---|
rollout | 管理资源的回滚 |
rolling-update | 对给定的复制控制器滚动更新 |
scale | 为部署、副本集、复制控制器或作业设置新大小,即手动改变应用程序的规模 扩容或缩容 Pod 数量,Deployment、ReplicaSet、RC 或 Job kubectl scale deployment ngx-1 -n test --replicas=3
|
autoscale | 创建一个自动选择扩容或缩容并设置 Pod 数量 自动伸缩部署、副本集或副本控制器,即自动改变应用程序的规模 |
3 集群管理命令
命令 | 描述 |
---|---|
certificate | 修改证书资源 |
cluster-info | 显示集群信息 kubectl cluster-info |
top | 显示资源(CPU/Memory/Storage)使用,需要 Heapster 运行 |
cordon | 将节点标记为不可调度 |
uncordon | 将节点标记为可调度 |
drain | 驱逐节点上的应用,准备下线维护 |
taint | 更新一个或多个节点上的污点,和高级调度相关的,给节点增加污点后, 能容忍污点的pod就可以调度上来,否则就不能调度上来 其实当前的master就有很多污点,这也就是为什么很多创建的pod不会调度到master上, 因为默认创建的所有pod都无法容忍master的污点, 这样确保了master只运行apiserver、controller-manager、schedulable和etcd等几个重要的系统级资源 |
深入kubernetes调度之Taints(污点)和Tolerations(容忍)
https://blog.csdn.net/tiger435/article/details/73650174
4 故障诊断和调试命令
命令 | 描述 |
---|---|
describe | 显示特定资源或资源组的详细信息kubectl describe pod my-test-123sdf-dyxdf kubectl describe node kube-node1 (可以查看污点等信息) |
logs | 在一个 Pod 中打印一个容器日志,如果 Pod 只有一个容器,容器名称是可选的 |
attach | 附加到正在运行的容器上 |
exec | 在容器中执行命令 |
port-forward | 将一个或多个本地端口转发到一个pod |
proxy | 运行 Kubernetes API 服务器的代理 运行一个 proxy 到 Kubernetes API Server |
cp | 从容器中复制文件和目录 |
auth | 检查授权 |
5 高级命令
命令 | 描述 |
---|---|
apply | 通过文件名或标准输入对资源应用配置 |
patch | 使用策略合并补丁更新资源的字段 |
replace | 通过文件名或标准输入替换一个资源 |
convert | 在不同的 API 版本之间转换配置文件 |
6 设置命令
命令 | 描述 |
---|---|
label | 更新资源上的标签,注意:lable 有长度限制 |
annotate | 更新资源上的注释,注释没有长度限制,可以打上任何的 kv 数据 |
completion | 用于实现 kubectl 工具自动补全,指定shell的输出shell完成代码(bash 或 zsh) |
7 其他命令
命令 | 描述 |
---|---|
api-versions | 在服务器上以“组/版本”的形式打印支持的 API 版本 kube-apiserver --version |
config | 修改 kubeconfig 文件(用于访问 API,比如配置认证信息) |
help | 关于任何命令的帮助 kubectl logs -h |
plugin | 运行一个命令行插件 |
version | 打印客户端和服务器版本信息kubectl version 打印 kube-controller-manager 版本信息 kube-controller-manager --version |
8 排查 Pod 异常的常用命令:
查看 Pod 状态
kubectl get pods <pod-name> -n <namespace> -o wide
查看 Pod 的 yaml 配置
kubectl get pods <pod-name> -n <namespace> -o yaml
查看 Pod 的事件
kubectl describe pods <pod-name> -n <namespace>
查看 Pod 容器日志
kubectl logs -n <namespace> <pod-name> [-c <container-name>]
# 可以 tailf 该 Pod 的日志观察进度
kubectl logs kibana-logging-7445dc9757-pvpcv -n kube-system -f
查看 kube-system 命名空间下的所有服务
kubectl get svc -n kube-system
9 pod排错步骤:
查看 kube-system 命名空间下的所有pod状态
kubectl get pods -n kube-system
kubectl get pods -n kube-system -o wide(显示IP信息和运行的node信息)
查看pod的事件
kubectl describe pod metrics-server-v0.2.1-5988c5d6b8-8x4l2 -n kube-system
查看pod metrics-server-v0.2.1-5988c5d6b8-8x4l2,容器名是metrics-server的日志,因为metrics-server-v0.2.1-5988c5d6b8-8x4l2有两个容器
kubectl logs metrics-server-v0.2.1-5988c5d6b8-8x4l2 metrics-server -n kube-system
上一篇: PHP常用数组函数列表
下一篇: python常用类型的内置函数列表