kubernetes 命令大全
一、查看Pod调度在哪个节点for i in 0 1 2; do kubectl get pod zk-$i --template {{.spec.nodeName}}; echo ""; done二、设置服务不可调度1、直接指定node节点不可调度kubectlcordon2、指定同Pod的节点不可调度kubectlcordon $(kubectlget pod zk-0 --template
·
实用命令:
一、查看Pod调度在哪个节点
for i in 0 1 2; do kubectl get pod zk-$i --template {{.spec.nodeName}}; echo ""; done
二、设置服务不可调度
1、直接指定node节点不可调度
kubectl cordon
2、指定同Pod的节点不可调度
kubectl cordon $(kubectl get pod zk-0 --template {{.spec.nodeNmae}})
三、逐步耗尽资源
1、直接指定消耗node节点
kubectl drain node节点 --ignore-daemonsets --force --delete-local-data
2、耗尽同Pod节点上的node节点
kubectl drain $(kubectl get pod zk-0 --template {{.spec.nodeName}}) --ignore-daemonsets --force --delete-local-data
四、强制删除Pod
kubectl delete pods <pod> --grace-period=0 --force
如果仍停留在Unknown状态中,请使用以下命令从集群中删除该pod:
kubectl patch pod <pod> -p '{"metadata":{"finalizers":null}}'
五、强制删除pv
kubectl patch pv xxx -p '{"metadata":{"finalizers":null}}'
六、查看控制器名称缩写
kubectl api-resources
七、删除不是Running状态的Pod
kubectl get po -A |grep -v Running |awk '{print $2}' |xargs kubectl delete pods --grace-period=0 --force
八、开启 kubectl 自动补全
echo "source <(kubectl completion bash)" >> ~/.bashrc
九、查看容器日志
1、仅输出pod nginx中最近的20条日志
kubectl logs --tail=20 nginx-6f66f89b57-55kp8
2、持续输出pod 容器的日志
kubectl logs -f nginx-6f66f89b57-55kp8
十、查看控制器的缩写名称
kubectl api-resources
基础命令:
create、delete、get、run、expose、set、explain、edit、cp
create: 根据文件或者输入来创建资源
kubectl create -f mysa-pod.yaml
delete:删除资源
1、删除单个对象
kubectl delete -f mysa-pod.yaml
2、删除多个资源
kubectl delete -f mysa-pod.yaml -f mysa-pods.yaml
3、删除对应资源
kubectl delete ([-f FILENAME] | [-k DIRECTORY] | TYPE [(NAME | -l label | --all)]) [options]
get:获得资源信息
1、查看所有的资源信息
kubectl get all
2、查看pod列表
kubectl get pod
3、显示pod节点的标签信息
kubectl get pod --show-labels
4、根据指定标签匹配到具体的pod
kubectl get pods -l app=example
5、查看node节点列表
kubectl get node
6、查看pod详细信息,并且显示标签
kubectl get po -o wide --show-labels
7、查看名称空间下的Pod
kubectl get pod -n kube-system
8、查看deployment详细信息(可以查看使用的镜像)
kubectl get deployment -o wide --show-labels
run: 在集群中创建并运行一个或多个容器镜像。
1、运行一个Pod
kubectl run nginx --image=nginx
2、创建一个deployment的nginx.yaml且不运行
kubectl run nginx --image=nginx --dry-run=client -o yaml > nginx.yaml
3、创建格式
kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server|client] [--overrides=inline-json]
[--command] -- [COMMAND] [args...] [options
expose命令:创建一个service服务,并且暴露端口让外部可以访问
set命令: 配置应用的一些特定资源,也可以修改应用已有的资源
kubectl set --help
Available Commands:
env Update environment variables on a pod template
image 更新一个 pod template 的镜像
resources 在对象的 pod templates 上更新资源的 requests/limits
selector 设置 resource 的 selector
serviceaccount Update ServiceAccount of a resource
subject Update User, Group or ServiceAccount in a RoleBinding/ClusterRoleBinding
1、 将deployment的nginx容器cpu限制为“200m”,将内存设置为“512Mi”
kubectl set resources deployment nginx -c=nginx --limits=cpu=200m,memory=512Mi
2、为nginx中的所有容器设置 Requests和Limits
kubectl set resources deployment nginx --limits=cpu=200m,memory=512Mi --requests=cpu=100m,memory=256Mi
3、删除nginx中容器的计算资源值
kubectl set resources deployment nginx --limits=cpu=0,memory=0 --requests=cpu=0,memory=0
explain:用于显示资源文档信息
(学习都是用此命令学习k8s)
kubectl explain pods.spec.containers
edit:用于编辑资源信息
kubectl edit deployment deploycpuandmemorynginx
cp命令:拷贝文件或者目录到pod容器中
kubectl cp /tmp/nginx.yaml nginx-6f66f89b57-55kp8:/tmp/
用于pod与宿主机的文件复制,类似于docker 的cp命令
设置命令:
label,annotate,completion
label命令:用于更新(增加、修改或删除)资源上的 label(标签)
- label
必须以字母或数字开头
,可以使用字母、数字、连字符、点和下划线,最长63个字符。 - 如果
--overwrite 为 true
,则可以覆盖已有的 label
,否则尝试覆盖 label 将会报错。 - 如果指定了–resource-version,则更新将使用此资源版本,否则将使用现有的资源版本。
# 给名为foo的Pod添加label unhealthy=true
kubectl label pods foo unhealthy=true
# 给名为foo的Pod修改label 为 'status' / value 'unhealthy',且覆盖现有的value
kubectl label --overwrite pods foo status=unhealthy
# 给 namespace 中的所有 pod 添加 label
kubectl label pods --all status=unhealthy
# 仅当resource-version=1时才更新 名为foo的Pod上的label
kubectl label pods foo status=unhealthy --resource-version=1
# 删除名为“bar”的label 。(使用“ - ”减号相连)
kubectl label pods foo bar-
annotate命令:更新一个或多个资源的Annotations信息。也就是注解信息,可以方便的查看做了哪些操作。
- Annotations由key/value组成。
Annotations的目的是存储辅助数据,特别是通过工具和系统扩展操作的数据。
- 如果
--overwrite为true,现有的annotations可以被覆盖
,否则试图覆盖annotations将会报错。 - 如果设置了–resource-version,则更新将使用此resource version,否则将使用原有的resource version。
# 更新Pod“foo”,设置annotation “description”的value “my frontend”,如果同一个annotation多次设置,则只使用最后设置的value值
kubectl annotate pods foo description='my frontend'
# 根据“pod.json”中的type和name更新pod的annotation
kubectl annotate -f pod.json description='my frontend'
# 更新Pod"foo",设置annotation“description”的value“my frontend running nginx”,覆盖现有的值
kubectl annotate --overwrite pods foo description='my frontend running nginx'
# 更新 namespace中的所有pod
kubectl annotate pods --all description='my frontend running nginx'
# 只有当resource-version为1时,才更新pod ' foo '
kubectl annotate pods foo description='my frontend running nginx' --resource-version=1
# 通过删除名为“description”的annotations来更新pod ' foo '。#不需要- overwrite flag。
kubectl annotate pods foo description-
completion命令:用于设置kubectl命令自动补全
source <(kubectl completion bash)
kubectl 部署命令:
rollout,rolling-update,scale,autoscale
集群管理命令:
certificate,cluster-info,top,cordon,uncordon,drain,taint
certificate命令:用于证书资源管理,授权等(目前没有接触过)
kubectl certificate --help
Available Commands:
approve 同意一个自签证书请求
deny 拒绝一个自签证书请求
Usage:
kubectl certificate SUBCOMMAND [options]
cluster-info:显示集群信息
kubectl cluster-info
Kubernetes master is running at https://192.168.76.132:6443
KubeDNS is running at https://192.168.76.132:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://192.168.76.132:6443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
top命令:查看资源的cpu、内存磁盘等资源的使用率(涉及HPA)
kubectl top pod --all-namespaces
cordon命令:用于标记某个节点不可调度
kubectl cordon node
uncordon命令:恢复节点可以被调度
kubectl uncordon node
drain命令: 用于在维护期间排除节点。
kubectl drain node node --ignore-daemonsets --force --delete-local-data
taint: 为节点打上污点
集群故障排查和调试命令:
describe、logs、exec、attach、port-foward、proxy、auth
describe:显示资源的详细信息
kubectl describe po deploycpuandmemorynginx-6f66f89b57-55kp8
logs:查看容器的日志信息
1、输出pod 最近一小时内产生的所有日志
kubectl logs nginx-6f66f89b57-55kp8 --since=1h
2、仅输出pod nginx中最近的20条日志
kubectl logs --tail=20 nginx-6f66f89b57-55kp8
3、持续输出pod 容器的日志
kubectl logs -f nginx-6f66f89b57-55kp8
exec命令:进入容器进行交互,在容器中执行命令
kubectl exec POD [-c CONTAINER] -- COMMAND [args...]
#命令选项
-c, --container="": 容器名。如果未指定,使用pod中的一个容器。
-p, --pod="": Pod名。
-i, --stdin[=false]: 将控制台输入发送到容器。
-t, --tty[=false]: 将标准输入控制台作为容器的控制台输入。
# 进入nginx容器,执行一些命令操作
kubectl exec -it nginx-deployment-58d6d6ccb8-lc5fp bash
更多推荐
已为社区贡献1条内容
所有评论(0)