一、基本命令
1. create
说明:从文件或者标注输入中创建资源
指令:
clusterrole Create a cluster role
clusterrolebinding Create a cluster role binding for a particular cluster role
configmap Create a config map from a local file, directory or literal value
cronjob Create a cron job with the specified name
deployment Create a deployment with the specified name
ingress Create an ingress with the specified name
job Create a job with the specified name
namespace Create a namespace with the specified name
poddisruptionbudget Create a pod disruption budget with the specified name
priorityclass Create a priority class with the specified name
quota Create a quota with the specified name
role Create a role with single rule
rolebinding Create a role binding for a particular role or cluster role
secret Create a secret using specified subcommand
service Create a service using a specified subcommand
serviceaccount Create a service account with the specified name
token Request a service account token
常用选项options
--dry-run: 模拟运行,而不是提交给api
-f: 指定文件、目录或URL来创建资源
-o: 输入格式:可以为yaml,json等
-l: 标签选择过滤
常用案例:
1) 创建deployment
kubectl create deploy dep-test --image=busybox --replicas=2 --port=5701 -n app
参数说明:
--port: 指定容器运行端口
--replicas: 指定运行副本数
2) 创建ingress
kubectl create ingress ingress-test --class=default --rule="foo.com/app*=svc:port"
kubectl create ingress ingress-test --class=default --rule="foo.com/app=svc:port"
参数说明:
--class: 指定ingress class
--rule: 指定rules匹配规则 格式为: host/path=service:port,注意:如果path包含*,表示pathType为Prefix,反之则是Exact
3) 创建RBAC
3.1 创建serviceaccount
kubectl create serviceaccout sa-test
3.2 创建role
kubectl create role test-role --verb=get,list,create,watch --resource=pod
kubectl create role foo -n cka --resource=rs.apps,pod,deployment --verb=get,list,watch
参数说明:
verb: 指定可执行的权限动作
resource: 指定role作用对象
3.3 创建clusterrole
kubectl create clusterrole NAME --verb=verb --resource=resource.group
kubectl create clusterrole pod-reader --verb=get,list,watch --resource=pod
3.4 创建rolebinding
kubectl create rolebinding test --role=test --serviceaccount=default:test
参数说明:
--role:指定role对象
--serviceaccount: 指定sa
--user: 指定用户
3.5 创建clusterrolebinding
kubectl create clusterrolebinding cluster-admin --clusterrole=cluster-admin --user=user2 --group=group1
1.2 expose
说明:Expose a resource as a new Kubernetes service
resource包含:pod,service,rc,deploy,rs等
案例:
kubectl expose rc nginx --port=80 --target-port=8080
kubectl expose pod nginx-test --port=80 --target-port=8000
参数说明:
-l: 指定标签
--port: 指定服务端口
--protocol: 指定协议,默认TCP
--selector: 指定标签选择器
--target-port: 指定容器端口
--type: 指定服务类型
1.3 run
说明: Create and run a particular image in a pod
案例:
kubectl run ng --image=nginx
kubectl run ng --image=nginx --port=80 --restart=Never --labels="env=dev" --env="username=luoxianming"
参数:
--env: 指定环境变量
--port: 指定容器端口
--restart: 指定重启策略
--privileged=false:指定是否特权模式
1.4 set
说明:These commands help you make changes to existing application resources
可用命令:
env Update environment variables on a pod template
image Update the image of a pod template
resources Update resource requests/limits on objects with pod templates
selector Set the selector on a resource
serviceaccount Update the service account of a resource
subject Update the user, group, or service account in a role binding or cluster role binding
案例:
更新镜像
kubectl set image deploy front-end nginx=nginx:1.15
查看更新状态
kubectl rollout status deploy front-end
更新环境变量
kubectl set env deploy registry SRORAGE_DIR=/data
更新资源限制
kubectl set resources deploy registry --limits=cpu=200m,memory=512Mi --requests=cpu=100m,memory=200Mi
更新pod模板的serviceaccount
kubectl set serviceaccount deployment nginx-deployment luo
参数说明:
--all: 在指定名称空间中选择所有指定类型的资源
-c: 指定容器
-e: 指定env
1.5 explain
说明:对象说明文档
格式:. [. ]
案例:
kubectl explain pod.spec
1.6 get
说明:展示一个或多个资源
参数:
-A: all-namespace
-l: 选择指定标签
--show-labes: 标签展示
-w: watch
案例展示:
kubectl get all
kubectl get resouces --all-namespaces
参数:
-A: --all-namespaces
-l: 标签选择器
--show-labels: 展示标签
-o wide: 扩展输出
1.7 edit
说明:编辑资源
1.5 delete
说明:删除指定对象
案例:kubectl delete po -l app=registry
通过标签删除指定对象
kubectl delete po --all
参数:
--cascade: 级联删除。默认为true,例如删除rs,rs所管理的pod也会被删除
--all: 指定所有资源
--grace-period: 优雅删除。删除资源前等待的秒数,负数表示忽略该选项
--timeout: 删除资源超时设置
--force: 立即删除。会绕过优雅删除,可能会导致数据丢失,确认后执行
二、部署命令
2.1 rollout
说明: 管理回滚资源
资源类型:
deployments
daemonsets
statefulsets
可用命令:
history View rollout history
pause Mark the provided resource as paused
restart Restart a resource
resume Resume a paused resource
status Show the status of the rollout
undo Undo a previous rollout
案例:
前提:使用--record记录
kubectl set image deploy nginx nginx=nginx:1.15 --record
查看回滚状态
kubectl rollout status deploy registry
查看历史版本
kubectl rollout history deploy registry
回滚到指定版本
kubectl rollout undo deploy foo -n cka --to-revision=2
回滚到上一个版本
kubectl rollout undo deploy foo -n cka
2.2 scale
说明:Set a new size for a deployment, replica set, or replication controller
案例:
指定多个rc控制器
kubectl scale --replicas=5 rc/foo rc/bar rc/baz
2.3 autoscale
说明:Creates an autoscaler that automatically chooses and sets the number of pods that run in a Kubernetes cluster
An autoscaler can automatically increase or decrease number of pods deployed with in the system as needed
案例:
kubectl autoscale rc foo --max=5 --cpu-percent=80
注意:autoscale依赖于 Metrics,需要集群事先有安装该插件
三、集群管理命令
3.1 certificate
说明:Modify certificate resources.
可用子命令:
approve Approve a certificate signing request
deny Deny a certificate signing request
子命令说明:
kubectl certificate approve allows a cluster admin to approve a certificate signing request (CSR)
案例:
kubectl certificate approve csr-sqgzp
3.2 cluster-info
说明:Display addresses of the control plane and services with label kubernetes.io/cluster-service=true3.3 top
说明:The top command allows you to see the resource consumption for nodes or pods
子命令:
node Display resource (CPU/memory) usage of nodes
pod Display resource (CPU/memory) usage of pods
参数说明:
-l: 指定标签选择
--sort-by: 按照CPU或者内存排序(cpu|memory)
案例:
kubectl top node
kubectl top node node-name
kubectl top po registry-84b6d797b-26xn6
按照CPU排序
kubectl top node --sort-by=cpu
按照内存排序
kubectl top node --sort-by=memory
4.3 cordon
说明:Mark node "foo" as unschedulable
案例:
kubectl cordon foo
4.4 uncordon
说明:Mark node as schedulable
案例:
kubectl uncordon k8s-node01
4.5 drain
说明:Drain node in preparation for maintenance
注意:
1.1 drain wait for graceful termination,You should not operate on the machine until the command completes
参数:
--delete-emptydir-date:
--force: 当一些pod不是经过RC、RS、Job等控制器管理时,需要使用--force强制执行
--grace-period: 指定优雅删除等待时间
--ignore-daemonsets: 忽略Daemonset 管理的pod
--pod-selector: 标签选择器过滤pod
案例:
kubectl drain k8s-node1 --force --ignore-daemonsets4.6 taint
说明:Update the taints on one or more nodes
格式:key=value:effect
案例:
1. 添加污点
kubect taint node k8s-node1 app=web:NoSchedule
2. 删除污点
kubectl taint node k8s-node1 app:NoSchedule-
kubectl taint node k8s-node1 app-
3. 在有标签app=web的node上添加污点
kubectl taint node -l app=web app=web:PreferNoSchedule
effect类型:
NoSchedule: k8s不会将pod调度到该污点的node上
PreferNoScheduler: k8s尽量避免将pod调度到该污点的node上
NoExecute:k8s不会将pod调度到具有该污点的node上,同时会将node上已经存在的pod驱逐
注意: taint是针对node而言,容忍度是针对pod而言
五、问题排查处理
5.1 describe
说明:Show details of a specific resource or group of resources.
案例:
kubectl descibe node k8s-node1
5.2 logs
说明:print the logs for a container in a pod or specified resource
案例:
1. 查看最近20行日志
kubectl logs --tail=20 nginx
2. 查看最近一个小时的日志
kubectl logs --since=1h nginx
参数:
-c: 指定容器
--previous: 输出pod曾经运行过,但是目前已经终止的容器日志
--since: 输出相对时间范围之内的日志。默认返回所有日志
--timestamps: 在日志中包含时间戳
--since-time: 仅返回指定时间之后的日志
5.3 attach
说明:Attach to a process that is already running inside an existing container.
案例:
kubectl attach mypod
5.4 exec
说明:Execute a command in a container
案例:
1. 执行命令
kubectl exec demo-deploy-66799b89cc-lm7jl -n app -- date
参数:
-c: 指定容器
-i: 标准输入到容器
-t: 分配TTY
5.5 port-forward
说明:Forward one or more local ports to a pod
可以将本地上计算机的端口转发到k8s集群中的Pod和service上,port-forward 命令只是一种方便的调试工具,不应该在生产环境中使用
案例:
kubectl port-forward pod/mypod 5000 6000
my-pod 的 Pod 的端口 80 转发到本地计算机上的端口 8080
kubectl port-forward my-pod 8080:80
查看端口
netstat -tunpl | grep 8080
验证本地是否可以访问
curl 127.0.0.1:8080
5.6 cp
说明: 复制 files 和 directories 到 containers 和从容器中复制 files 和 directories
注意:requires that the 'tar' binary is present in your container image. If 'tar' is not present, 'kubectl cp' will fail
案例:
kubectl cp /tmp/foo_dir:/tmp/bar_dir
5.7 auth
说明: Inspect authorization
子命令:
can-i Check whether an action is allowed
reconcile Reconciles rules for RBAC Role, RoleBinding, ClusterRole, and ClusterRole binding objects
1. 检查操作,操作类型:
get,list,watch,delete等,
2. 协调RBAC角色、角色绑定、集群角色和集群角色绑定等
案例:
1. 检查是否可以在任何命名空间创建Pod
kubectl auth can-i create pods --all-namespaces
2. 检查是否可以在当前名称空间列出部署
kubectl auth can-i list deployments.apps
3. 协调文件中的RBAC资源
kubectl auth reconcile -f my-rbac-rules.yaml
5.8 debug
说明:Debug cluster resources using interactive debugging containers
案例:
kubectl debug demo-deploy-66799b89cc-lm7jl -n app -it --image=busybox --target=demo-deploy
参数说明:
--image: 指定debug的镜像工具
--target: 指定被debug的容器名称
六、高级命令
6.1 diff
说明:Diff configurations specified by filename or stdin between the current online configuration, and the configuration as it
would be if applied
案例:
kubectl diff -f pod.json
6.2 apply
说明:Apply a configuration to a resource by filename or stdin
案例:
kubectl apply -k dir/
6.3 patch
说明: Update field(s) of a resource using strategic merge patch, a JSON merge patch, or a JSON patch
更新修改资源的字段
案例:
kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'
6,4 replace
说明: Replace a resource by filename or stdin.
案例:
Force replace, delete and then re-create the resource
kubectl replace --force -f ./pod.json
6.5 wait
说明:Wait for a specific condition on one or many resources
kubectl wait --for=delete pod/busybox1 --timeout=60s
七、设置指令
7.1 label
说明:Update the labels on a resource
案例:
1. 更新标签
kubectl label pods foo unhealthy=tru
2. 删除标签
kubectl label pods foo bar-
7.2 annotate
说明:Update the annotations on one or more resources
案例:
kubectl annotate pods foo description='my frontend'
kubectl annotate po -n app demo-deploy-66799b89cc-lm7jl env="this is a test"
八、其他命令
8.1 api-resources
说明: 查看api资源
8.2 api-version
说明:查看api版本
8.3 config
说明:Modify kubeconfig files using subcommands like "kubectl config set current-context my-context"
子命令:
current-context 显示 current_context
delete-cluster 删除 kubeconfig 文件中指定的集群
delete-context 删除 kubeconfig 文件中指定的 context
delete-user Delete the specified user from the kubeconfig
get-clusters 显示 kubeconfig 文件中定义的集群
get-contexts 描述一个或多个 contexts
get-users Display users defined in the kubeconfig
rename-context Renames a context from the kubeconfig file.
set 设置 kubeconfig 文件中的一个单个值
set-cluster 设置 kubeconfig 文件中的一个集群条目
set-context 设置 kubeconfig 文件中的一个 context 条目
set-credentials 设置 kubeconfig 文件中的一个用户条目
unset 取消设置 kubeconfig 文件中的一个单个值
use-context 设置 kubeconfig 文件中的当前上下文
view 显示合并的 kubeconfig 配置或一个指定的 kubeconfig 文件8.4 plugin
说明:插件管理
kubectl plugin list
8.5 version
说明:查看版本