CloudService 发表于 2022-6-24 11:05:11

Kubectl有哪些常用命令

Kubectl简述在学习如何更有效地使用kubectl之前,您应该基本了解它是什么以及它是如何工作的。
从用户角度来说:
kubectl是控制Kubernetes的驾驶舱。它允许您执行所有可能的Kubernetes操作。
从技术角度来说:
kubectl是Kubernetes API的客户端,通过该客户端我们可以完全控制Kubernetes,这意味着每个Kubernetes操作都作为API端口公开,并且可以通过对此端点的HTTP请求来执行。
命令大全(我所知道的)查询命令查看所有pod

kubectl get pods

动态监听查看所有pod

kubectl get pods-w

查看所有deploymen

kubectl get deployment

查看所有service服务
kubectl get service ?

查看关联后端节点
kubectl get endpoints ?

查看相关POD的日志
kubectl get logs NAME ?

pod副本数量调整kubectl scale [--current-replicas=replicas] --replicas=replicas NAME

其中,
“--current-replicas” ?当前副本数量
“--replicas” ??副本数量
项目的生命周期创建--》发布--》更新--》回滚--》删除
创建kubect run NAME --image=image [--port=port] [--replicas=replicas] [--command]

“--image” ?指定镜像
“--replicas” ??指定副本数量
“--port” ?指定内部通信端口
实例:kubectl run nginx --image=nginx:latest --replicas=3

以最新版nginx作为镜像建立有着三个副本的pods

发布kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP|SCTP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type]

“-f FILENAME ” ??指定YAML文件名称
“TYPE NAME” ??指定deploymen名称
“--type” ?指定服务类型(默认为集群地址-clusterip)
“--port=80” 内部通信的端口
“--target-port=80” ?暴露在外部的端口
实例:kubectl expose deploy/nginx --port=80 --target-port=80 --name=nginx-svc --type=NodePort

将nginx以内部端口80,暴露端口80,指定名称为nginx-svc,类型为节点形式进行发布。
更新kubectl set image deploy/NAME NAME=新版本
实例:kubectl set image deploy/nginx nginx=nginx:1.14

变更nginx版本为nginx1.14

回滚kubectl rollout

常用command:
history ??显示 rollout 历史
pause ???标记提供的 resource 为中止状态
resume ??继续一个停止的 resource

status ??显示 rollout 的状态
undo ???撤销上一次的 rollout

实例:kubectl rollout undo deploy/nginx

删除kubectl delete ([-f FILENAME] | TYPE [(NAME | -l label | --all)])

实例:
kubectl delete svc/nginx-svc

kubectl delete deploy/nginx

除此之外,还有一批命令~~~查看资源对象简写
kubectl api-resources ?

查看具体资源详细信息
kubectl describe (-f FILENAME | TYPE | TYPE/NAME)

实例:
kubectl describe pod/nginx-7697996758-9d6tf

kubectl describe svc/nginx

编辑资源详细信息
kubectl edit (-f FILENAME | TYPE | TYPE/NAME)

实例:
kubectl edit deploy/NAME

进入相应pod中*

kubectl exec POD [-c CONTAINER] -- COMMAND

例子:kubectl exec -it nginx-7697996758-9d6tf bash

查看生成的YAML格式文件
kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o yaml

查看生成的JSON格式文件
kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o json

生成YAML 、 JSON文件导出
kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o json(yaml) > test.json(yaml)

将现有资源进行导出
kubectl get svc/nginx-svc --export -o yaml > nginx-svc.yaml

测试命令正确性,不执行(类似shell脚本中的sh -n)
kubectl run nginx --image=nginx --port=80 --replicas=2 --dry-run

create与apply的异同通过YAML文件建立
kubectl create -f FILENAME

例子:kubectl create -f nginx.yaml

通过YAML文件升级deployment

kubectl apply -f FILENAME

相同点不同点如果yaml文件中的kind值为deployment,那么上面这两个命令都可以创建一个deployment,生成相应数量的podcreate命令:是先删除所有现有的东西,重新根据yaml文件生成新的。所以要求yaml文件中的配置必须是完整的<br />apply命令:根据配置文件里面列出来的内容,升级现有的。所以yaml文件的内容可以只写需要升级的属性
页: [1]
查看完整版本: Kubectl有哪些常用命令