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 #选择所有pod,要求至少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 |
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。