欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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