kubenetes集群安装与配置请点击https://github.com/easzlab/kubeasz

kubectl用法概述

格式

 $ kubectl [command] [TYPE] [NAME] [flags]
  • command:子命令,用于操作Kubernetes集群资源对象的命令,例如create、delete、describe、get、apply等。
  • TYPE:资源对象的类型,区分大小写,能以单数形式、复数形式或者简写形式表示。
  • NAME:资源对象的名称,区分大小写。
  • flags:kubectl子命令的可选参数
资源对象名称 缩写
componentstatuses cs
configmaps cm
endpoints ep
events ev
limitranges limits
namespaces ns
nodes no
persistentvolumeclaims pvc
persistentvolumes pv
pods po
replicationcontrollers rc
resourcequotas quota
serviceaccounts sa
services svc
daemonsets ds
deployments deploy
replicasets rs
statefulsets sts
horizontalpodautoscalers hpa
cronjobs cj
certificatesigningrequests csr
events ev
daemonsets ds
deployments deploy
ingresses ing
networkpolicies netpol
podsecuritypolicies psp
replicasets rs
ingresses ing
networkpolicies netpol
poddisruptionbudgets pdb
podsecuritypolicies psp
priorityclasses pc
storageclasses sc

常用操作整理

子命令 示例说明
annotate kubectl annotate pods foo description='my frontend'
设置pod 'foo'的description
run kubectl run nginx --image=nginx --port=80
启动nginx实例,暴露容器端口80
expose kubectl expose -f nginx-controller.yaml --port=80 --target-port=8000
由“nginx-controller.yaml”中指定的type和name标识的RC创建Service,并通过Service的80端口转发至容器的8000端口上
autoscale kubectl autoscale deployment foo --min=2 --max=10
使用 Deployment “foo”设定,使用默认的自动伸缩策略,指定目标CPU使用率,使其Pod数量在2到10之间。
convert kubectl convert -f pod.yaml
将“pod.yaml”转换为最新版本并打印到stdout
create cat pod.json | kubectl create -f -
通过stdin的JSON创建一个pod
create clusterrole kubectl create clusterrole pod-reader --verb=get,list,watch --resource=pods
创建一个名为“pod-reader”的ClusterRole,允许用户在pod上执行“get”,“watch”和“list”
create clusterrolebinding kubectl create clusterrolebinding cluster-admin --clusterrole=cluster-admin
--user=user1 --user=user2 --group=group1
在集群范围将cluster-admin ClusterRole授予用户user1,user2和group1
create configmap kubectl create configmap my-config --from-env-file=path/to/bar.env
从env文件创建一个名为my-config的configmap
create deployment kubectl create deployment my-dep --image=busybox
创建一个名为my-dep的deployment,运行busybox镜像
create namespace kubectl create namespace my-namespace
创建一个名为my-namespace的namespace
create poddisruptionbudget kubectl create pdb my-pdb --selector=app=nginx --min-available=50%
创建名为my-pdb的pod disruption budget,使用app = nginx label #选择所有po​​d,要求至少50%Pod可用
create quota kubectl create quota my-quota --hard=cpu=1,memory=1G,pods=2,services=3,replicationcontrollers=2,resourcequotas=1,secrets=5,persistentvolumeclaims=10
创建名为my-quota的resourcequota
create role kubectl create role foo --verb=get,list,watch --resource=pods,pods/status
使用指定的SubResource创建名为“foo”的Role
create rolebinding kubectl create rolebinding admin --clusterrole=admin --user=user1 --user=user2 --group=group1
将admin ClusterRole授予user1,user2和group1
create service clusterip kubectl create service clusterip my-cs --tcp=5678:8080
创建Service名为my-cs为的clusterIP
create service externalname kubectl create service externalname my-ns --external-name bar.com
创建Service名为my-ns的ExternalName
create service loadbalancer kubectl create service loadbalancer my-lbs --tcp=5678:8080
创建一个Service名为my-lbs的LoadBalancer
create service nodeport kubectl create service nodeport my-ns --tcp=5678:8080
创建service名为my-ns的新的nodeport
create serviceaccount kubectl create serviceaccount my-service-account
创建一个名为my-service-account的 service account
create secret tls kubectl create secret tls tls-secret --cert=path/to/tls.cert --key=path/to/tls.key
使用指定的key创建名为tls-secret的TLS secret
create secret generic kubectl create secret generic my-secret --from-file=ssh-privatekey=~/.ssh/id_rsa --from-file=ssh-publickey=~/.ssh/id_rsa.pub
使用指定的keys创建一个名为my-secret的secret
create secret docker-registry kubectl create secret docker-registry my-secret --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
如果没有.dockercfg 文件,则可以使用以下命令创建dockercfg secret
delete kubectl delete pod foo --grace-period=0 --force
强制删除dead node上的pod
edit kubectl edit deployment/mydeployment -o yaml --save-config
以YAML格式输出编辑deployment“mydeployment”,并将修改的配置保存在annotation中
get kubectl get pods --all-namespaces -o wide
列出Pod以及运行Pod节点信息
label kubectl label --overwrite pods foo status=unhealthy
给名为foo的Pod修改label 为 'status' / value 'unhealthy',且覆盖现有的value
patch kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'
使用patch更新Node节点
replace kubectl replace --force -f ./pod.json
强制替换,删除原有资源,然后重新创建资源
rolling-update cat frontend-v2.json | kubectl rolling-update frontend-v1 -f -
使用JSON数据更新frontend-v1的pod
rollout history kubectl rollout history daemonset/abc --revision=3
查看deployment的历史记录
rollout pause kubectl rollout pause deployment/nginx
将deployment标记为暂停
rollout resume kubectl rollout resume deployment/nginx
恢复已暂停的 deployment
rollout status kubectl rollout status deployment/nginx
查看deployment的状态
rollout undo kubectl rollout undo daemonset/abc --to-revision=3
回滚到daemonset 修订3版本
scale kubectl scale --replicas=3 rs/foo
将名为foo中的pod副本数设置为3
set resources kubectl set resources deployment nginx --limits=cpu=200m,memory=512Mi --requests=cpu=100m,memory=256Mi
为nginx中的所有容器设置 Requests和Limits
set selector kubectl create service clusterip my-svc --clusterip="None" -o yaml --dry-run | kubectl set selector --local -f - 'environment=qa' -o yaml | kubectl create -f -
在创建service对之前设置labels和selector
set image kubectl set image deployment/nginx busybox=busybox nginx=nginx:1.9.1
将deployment中的nginx容器镜像设置为nginx1.9.1
set subject kubectl set subject rolebinding admin --user=user1 --user=user2 --group=group1
更新RoleBinding的user1,user2和group1

EngineerLeo
598 声望38 粉丝

专注于云原生、AI等相关技术