Table of Contents generated with DocToc
- kubectl 命令格式
- 最基本命令
- 👉kubectl create - 从文件或标准输入创建资源
- 👉kubectl create clusterrole - 创建集群角色
- 👉kubectl create clusterrolebinding - 集群角色绑定
- 👉kubectl create configmap - 根据文件、目录或指定的文字值创建配置configmap
- kubectl create cronjob - 创建cronjob
- kubectl create deployment - 创建deployment
- kubectl create ingress - 创建ingress
- kubectl create job - 创建job
- 👉kubectl create namespace - 创建namespace
- kubectl create poddisruptionbudget - 使用指定的名称、选择器创建 pod
- 👉kubectl create priorityclass - 创建优先级
- 👉kubectl create quota - 创建资源配额
- 👉kubectl create role - 使用单一规则创建角色
- 👉kubectl create rolebinding - 角色绑定
- 👉kubectl create secret - 创建secret
- kubectl create secret docker-registry - 创建docker-registry
- kubectl create secret generic - 根据文件、目录或指定的文字值创建secret
- kubectl create secret tls - 从给定的公钥/私钥对创建 secret TLS
- 👉kubectl create service - 创建service
- 👉kubectl create service clusterip - 创建clusterip服务
- kubectl create service externalname - 创建指定名称服务
- 👉kubectl create service loadbalancer - 创建loadbalancer 服务
- 👉kubectl create service nodeport - 创建nodeport服务
- 👉kubectl create serviceaccount -创建具有指定名称的服务帐户
- 👉kubectl create token - 创建请求token
- 👉kubectl get - 显示一个或多个资源
- kubectl run - 创建pod运行镜像
- 👉kubectl expose - 将资源公开为k8s服务
- 👉kubectl delete - 删除资源
- 👉kubectl create - 从文件或标准输入创建资源
- app管理
- 👉kubectl apply - 将配置应用于资源
- 👉kubectl annotate - 更新注解
- kubectl autoscale - 为资源自动扩缩副本
- kubectl debug - debug调试容器资源
- 👉kubectl diff - 对比pod与yaml的差异
- 👉kubectl edit - 修改编辑资源
- kubectl kustomize - 定制k8s配置
- 👉kubectl label - 修改资源label
- 👉kubectl patch - 修改资源
- 👉kubectl replace - 替换资源
- kubectl rollout - 版本控制
- 👉kubectl scale - 设置资源副本数
- kubectl set - 设置资源
- kubect wait - 等待达到某种状态
- app使用
- 集群管理
- 设置和使用
- kubectl alpha - alpha 功能
- 👉kubectl api-resources - 查看可用的API
- 👉kubectl completion - 命令自动补全
- 👉kubectl config - 修改 kubeconfig 文件
- kubectl config current-context - 展示current-context
- kubectl config delete-cluster - 从 kubeconfig 中删除指定的集群
- kubectl config delete-context - 从 kubeconfig 中删除指定的context
- kubectl config delete-user - 从 kubeconfig 中删除指定的user
- kubectl config get-clusters - 显示 kubeconfig 中定义的集群
- kubectl config get-contexts - 显示 kubeconfig 文件中的一个或多个context
- kubectl config get-users - 显示 kubeconfig 中定义的用户
- kubectl config rename-context - 从 kubeconfig 文件重命名context
- kubectl config set - 在 kubeconfig 文件中设置单个值
- kubectl config set-cluster - 在 kubeconfig 中设置集群
- kubectl config set-context - 在 kubeconfig 中设置context
- kubectl config set-credentials 在 kubeconfig 中设置用户
- kubectl config unset - 在 kubeconfig 文件中取消设置单个值
- kubectl config use-context - 在 kubeconfig 文件中设置use-context
- kubectl config view - 显示 kubeconfig 文件
- 👉kubectl explain - 列出支持资源的字段
- 👉kubectl options - 打印所有命令继承的标志列表
- 👉kubectl plugin - 插件
- 👉kubectl version - 版本信息
- kubectl 配置文件
kubectl 命令的基本格式是 kubectl <action> <resource>
,其中 action
可以是 create
, delete
, get
等等,resource
你可以使用 kubectl api-resources
获得完整列表。
例如,你可以通过 kubectl get nodes
获取节点信息,可以通过 kubectl describe nodes ${NODENAME}
获取节点详细信息。
kubectl create -f FILENAME
推荐使用yaml,如果手动 create 具体的 resource 请查阅create
kubectl create clusterrole NAME --verb=verb --resource=resource.group [--resource-name=resourcename] [--dry-run=server|client|none]
# 例子
kubectl create clusterrole pod-reader --verb=get,list,watch --resource=pods
kubectl create clusterrolebinding NAME --clusterrole=NAME [--user=username] [--group=groupname] [--serviceaccount=namespace:serviceaccountname] [--dry-run=server|client|none]
# 例子
kubectl create clusterrolebinding cluster-admin --clusterrole=cluster-admin --user=user1 --user=user2 --group=group1
kubectl create configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run=server|client|none]
# 例子
kubectl create configmap my-config --from-file=path/to/bar
kubectl create configmap my-config --from-file=key1=/path/to/bar/file1.txt --from-file=key2=/path/to/bar/file2.txt
kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2
kubectl create cronjob NAME --image=image --schedule='0/5 * * * ?' -- [COMMAND] [args...]
kubectl create cronjob my-job --image=busybox --schedule="*/1 * * * *"
kubectl create deployment NAME --image=image -- [COMMAND] [args...]
# 例子
kubectl create deployment my-dep --image=busybox
kubectl create ingress NAME --rule=host/path=service:port[,tls[=secret]]
# 例子
kubectl create ingress simple --rule="foo.com/bar=svc1:8080,tls=my-cert"
kubectl create job NAME --image=image [--from=cronjob/name] -- [COMMAND] [args...]
# 例子
kubectl create job my-job --image=busybox
kubectl create namespace NAME [--dry-run=server|client|none]
# 例子
kubectl create namespace stonebird
kubectl create poddisruptionbudget NAME --selector=SELECTOR --min-available=N [--dry-run=server|client|none]
# 例子
kubectl create poddisruptionbudget my-pdb --selector=app=rails --min-available=1
kubectl create pdb my-pdb --selector=app=nginx --min-available=50%
具有指定名称、值、globalDefault 和描述的
kubectl create priorityclass NAME --value=VALUE --global-default=BOOL [--dry-run=server|client|none]
# 例子
kubectl create priorityclass high-priority --value=1000 --description="high priority"
kubectl create priorityclass default-priority --value=1000 --global-default=true --description="default priority"
具有指定名称、硬限制和可选范围的
kubectl create quota NAME [--hard=key1=value1,key2=value2] [--scopes=Scope1,Scope2] [--dry-run=server|client|none]
# 例子
kubectl create quota my-quota --hard=cpu=1,memory=1G,pods=2,services=3,replicationcontrollers=2,resourcequotas=1,secrets=5,persistentvolumeclaims=10
kubectl create role NAME --verb=verb --resource=resource.group/subresource [--resource-name=resourcename] [--dry-run=server|client|none]
# 例子
kubectl create role foo --verb=get,list,watch --resource=rs.extensions
kubectl create rolebinding NAME --clusterrole=NAME|--role=NAME [--user=username] [--group=groupname] [--serviceaccount=namespace:serviceaccountname] [--dry-run=server|client|none]
# 例子
kubectl create rolebinding admin --clusterrole=admin --user=user1 --user=user2 --group=group1
Create a role binding for a particular role or cluster role
kubectl create secret
# 例子
kubectl create secret docker-registry my-secret --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
kubectl create secret docker-registry my-secret --from-file=.dockerconfigjson=path/to/.docker/config.json
用于pod拉取镜像
kubectl create docker-registry NAME --docker-username=user --docker-password=password --docker-email=email [--docker-server=string] [--from-file=[key=]source] [--dry-run=server|client|none]
# 例子
kubectl create secret docker-registry my-secret --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
kubectl create generic NAME [--type=string] [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run=server|client|none]
# 例子
kubectl create secret generic my-secret --from-file=path/to/bar
kubectl create tls NAME --cert=path/to/cert/file --key=path/to/key/file [--dry-run=server|client|none]
# 例子
kubectl create secret tls tls-secret --cert=path/to/tls.cert --key=path/to/tls.key
kubectl create service
kubectl create clusterip NAME [--tcp=<port>:<targetPort>] [--dry-run=server|client|none]
# 例子
kubectl create service clusterip my-cs --tcp=5678:8080
# handless 无头服务
kubectl create service clusterip my-cs --clusterip="None"
kubectl create externalname NAME --external-name external.name [--dry-run=server|client|none]
# 例子
kubectl create service externalname my-ns --external-name bar.com
kubectl create loadbalancer NAME [--tcp=port:targetPort] [--dry-run=server|client|none]
# 例子
kubectl create service loadbalancer my-lbs --tcp=5678:8080
kubectl create nodeport NAME [--tcp=port:targetPort] [--dry-run=server|client|none]
# 例子
kubectl create service nodeport my-ns --tcp=5678:8080
kubectl create serviceaccount NAME [--dry-run=server|client|none]
# 例子
kubectl create serviceaccount my-service-account
kubectl create token SERVICE_ACCOUNT_NAME
# 例子
kubectl create token myapp
kubectl create token myapp --namespace myns
kubectl create token myapp --duration 10m
kubectl get [(-o|--output=)json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file|custom-columns|custom-columns-file|wide] (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [flags]
# 例子
# --raw k8s-api
kubectl get --raw=/api/v1/nodes/11.185.19.215/proxy/metrics/cadvisor
# yaml 转json
kubectl get -f pod.yaml -o json
# --wath 循环监听
kubectl get node -A --watch
函数 | 描述 | 示例 | 结果 |
---|---|---|---|
text |
纯文本 | kind is {.kind} |
kind is List |
@ |
当前对象 | {@} |
与输入相同 |
. or [] |
子运算符 | {.kind} , {['kind']} or {['name\.type']} |
List |
.. |
递归下降 | {..name} |
127.0.0.1 127.0.0.2 myself e2e |
* |
通配符。获取所有对象 | {.items[*].metadata.name} |
[127.0.0.1 127.0.0.2] |
[start:end :step] |
下标运算符 | {.users[0].name} |
myself |
[,] |
并集运算符 | {.items[*]['metadata.name', 'status.capacity']} |
127.0.0.1 127.0.0.2 map[cpu:4] map[cpu:8] |
?() |
过滤 | {.users[?(@.name=="e2e")].user.password} |
secret |
range , end |
迭代列表 | {range .items[*]}[{.metadata.name}, {.status.capacity}] {end} |
[127.0.0.1, map[cpu:4]] [127.0.0.2, map[cpu:8]] |
'' |
引用解释执行字符串 | {range .items[*]}{.metadata.name}{'\t'}{end} |
127.0.0.1 127.0.0.2 |
使用 kubectl
和 JSONPath 表达式的示例:
# 例子
kubectl get pods -o json
kubectl get pods -o=jsonpath='{@}'
kubectl get pods -o=jsonpath='{.items[0]}'
kubectl get pods -o=jsonpath='{.items[0].metadata.name}'
kubectl get pods -o=jsonpath="{.items[*]['metadata.name', 'status.capacity']}"
kubectl get pods -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.startTime}{"\n"}{end}'
kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server|client] [--overrides=inline-json] [--command] -- [COMMAND] [args...]
pod (po), service (svc), replicationcontroller (rc), deployment (deploy), replicaset (rs)
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]
# 例子
kubectl expose service nginx --port=443 --target-port=8443 --name=nginx-https
按文件名、标准输入、资源和名称,或按资源和标签选择器删除资源
kubectl delete ([-f FILENAME] | [-k DIRECTORY] | TYPE [(NAME | -l label | --all)])
# 例子
# -f
kubectl delete -f ./pod.json
# stdin
cat pod.json | kubectl delete -f -
# -k yaml文件夹
kubectl delete -k dir
# -l 通过label删除
kubectl delete pods,services -l name=myLabel
# --force 立即删除
kubectl delete pod foo --force
通过文件名或标准输入
kubectl apply (-f FILENAME | -k DIRECTORY)
kubectl apply edit-last-applied (RESOURCE/NAME | -f FILENAME)
# 例子
kubectl apply edit-last-applied deployment/nginx
一般使用 kubectl apply -f
kubectl apply set-last-applied -f FILENAME
# 例子
kubectl apply set-last-applied -f deploy.yaml
kubectl apply set-last-applied -f path/
kubectl apply view-last-applied (TYPE [NAME | -l label] | TYPE/NAME | -f FILENAME)
# 例子
kubectl apply view-last-applied deployment/nginx
kubectl apply view-last-applied -f deploy.yaml -o json
kubectl annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]
# 例子
kubectl annotate --overwrite pods foo description='my frontend running nginx'
kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU]
# 例子
kubectl autoscale deployment foo --min=2 --max=10 --cpu-percent=80
kubectl debug (POD | TYPE[[.VERSION].GROUP]/NAME) [ -- COMMAND [args...] ]
# 例子
kubectl debug mypod -it --image=busybox --copy-to=my-debugger
kubectl diff -f FILENAME
# 例子
cat service.yaml | kubectl diff -f -
kubectl edit (RESOURCE/NAME | -f FILENAME
kubectl kustomize DIR
kubectl label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]
# 例子
kubectl label pods foo unhealthy=true
kubectl patch (-f FILENAME | TYPE NAME) [-p PATCH|--patch-file FILE]
# 例子
kubectl patch pod valid-pod -p '{"spec":{"containers":[{"name":"kubernetes-serve-hostname","image":"new image"}]}}'
用文件名或标准输入 一般用apply替换
kubectl replace -f FILENAME
kubectl rollout history (TYPE NAME | TYPE/NAME) [flags]
# 例子
kubectl rollout history daemonset <daemonset-name>
kubectl rollout pause RESOURCE
# 例子
kubectl rollout pause deployment/nginx
kubectl rollout restart RESOURCE
# 例子
kubectl rollout restart deployment/nginx
kubectl rollout resume RESOURCE
# 例子
kubectl rollout resume deployment/nginx
kubectl rollout status (TYPE NAME | TYPE/NAME) [flags]
# 例子
kubectl rollout status deployment/nginx
kubectl rollout undo (TYPE NAME | TYPE/NAME) [flags]
# 例子
kubectl rollout undo daemonset <daemonset-name> --to-revision=<revision>
#--to-revision 参数未指定,将选中最近的版本
为一个 Deployment、ReplicaSet 或 ReplicationController、statefulset设置一个新的规模尺寸值
kubectl scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME)
# 例子
kubectl scale --replicas=3 statefulset/web
kubectl scale --replicas=3 rs/foo
kubectl scale --replicas=3 deployment/mysql
kubectl set - 设置资源
kubectl set env RESOURCE/NAME KEY_1=VAL_1 ... KEY_N=VAL_N
# 例子
kubectl set env deployment/registry STORAGE_DIR=/local
kubectl set image (-f FILENAME | TYPE NAME) CONTAINER_NAME_1=CONTAINER_IMAGE_1 ... CONTAINER_NAME_N=CONTAINER_IMAGE_N
# 例子
kubectl set image deployment/nginx busybox=busybox nginx=nginx:1.9.1
为定义 pod 模板的任何资源指定计算资源要求(CPU、内存)。 如果一个 pod 被成功调度,它可以保证请求的资源量,但可能会达到其指定的限制。
kubectl set resources (-f FILENAME | TYPE NAME) ([--limits=LIMITS & --requests=REQUESTS]
# 例子
kubectl set resources deployment nginx -c=nginx --limits=cpu=200m,memory=512Mi
kubectl set resources deployment nginx --limits=cpu=0,memory=0 --requests=cpu=0,memory=0
请注意,如果资源在调用“设置选择器”之前有一个,则新选择器将覆盖旧选择器
kubectl set selector (-f FILENAME | TYPE NAME) EXPRESSIONS [--resource-version=version]
kubectl set serviceaccount (-f FILENAME | TYPE NAME) SERVICE_ACCOUNT
# 例子
kubectl set serviceaccount deployment nginx-deployment serviceaccount1
kubectl set sa -f nginx-deployment.yaml serviceaccount1 --local --dry-run=client -o yaml
或集群角色绑定中的用户、组或服务帐户
kubectl set subject (-f FILENAME | TYPE NAME) [--user=username] [--group=groupname] [--serviceaccount=namespace:serviceaccountname] [--dry-run=server|client|none]
# 例子
kubectl set subject clusterrolebinding admin --serviceaccount=namespace:serviceaccount1
kubectl set subject rolebinding admin --user=user1 --user=user2 --group=group1
kubectl wait ([-f FILENAME] | resource.group/resource.name | resource.group [(-l label | --all)]) [--for=delete|--for condition=available|--for=jsonpath='{}'=value]
# 例子
kubectl wait --for=condition=Ready pod/busybox1
kubectl attach (POD | TYPE/NAME) -c CONTAINER
# 例子
kubectl attach mypod -c ruby-container -i -t
kubectl auth
kubectl auth can-i VERB [TYPE | TYPE/NAME | NONRESOURCEURL]
# 例子
kubectl auth can-i create pods --all-namespaces
kubectl auth can-i list deployments.apps
协调 RBAC 角色、角色绑定、集群角色和集群角色
kubectl auth reconcile -f FILENAME
# 例子
kubectl auth reconcile -f FILENAME
kubectl auth reconcile -f my-rbac-rules.yaml
复制到容器 或者从容器复制
kubectl cp <file-spec-src> <file-spec-dest>
# 例子
kubectl cp /tmp/foo_dir <some-pod>:/tmp/bar_dir
kubectl cp /tmp/foo <some-pod>:/tmp/bar -c <specific-container>
kubectl cp <some-namespace>/<some-pod>:/tmp/foo /tmp/bar
kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME)
# 例子
kubectl describe pods/nginx
kubectl describe po -l name=myLabel
# 单个命令不带参数可以不带 --
kubectl exec (POD | TYPE/NAME) [-c CONTAINER] [flags] -- COMMAND [args...]
# 例子
kubectl exec mypod -c ruby-container -it bash
kubectl exec nginx -- nginx -T
kubectl logs [-f] [-p] (POD | TYPE/NAME) [-c CONTAINER]
# 例子
kubectl logs -f nginx
kubectl logs --tail=20 nginx
kubectl logs --since=1h nginx
一个或多个本地端口
kubectl port-forward TYPE/NAME [options] [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N]
# 例子
# Listen on ports 5000 and 6000 locally, forwarding data to/from ports 5000 and 6000 in the pod
kubectl port-forward pod/mypod 5000 6000
# Listen on port 8888 on all addresses, forwarding to 5000 in the pod
kubectl port-forward --address 0.0.0.0 pod/mypod 8888:5000
kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix]
# 例子
# 默认8001
kubectl proxy --api-prefix=/ &
kubectl top
kubectl top node [NAME | -l label]
# 例子
kubectl top node # all node
kubectl top node NODE_NAME
kubectl top pod [NAME | -l label]
# 例子
kubectl top pod # 默认default空间
kubectl top pod --namespace=NAMESPACE
kubectl api-versions
kubectl certificate approve (-f FILENAME | NAME)
# 例子
kubectl certificate approve csr-sqgzp
kubectl certificate deny (-f FILENAME | NAME)
# 例子
kubectl certificate deny (-f FILENAME | NAME)
kubectl cluster-info
kubectl cluster-info dump
# 例子
kubectl cluster-info dump --output-directory=/path/to/cluster-state
kubectl cordon NODE
kubectl drain NODE
kubectl drain NODE
# 例子
# 使用 --force,否则 drain 不会删除任何 pod。 如果一个或多个 pod 的管理资源丢失, --force 也将允许继续删除
kubectl drain foo --force
一个或多个node
kubectl taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 ... KEY_N=VAL_N:TAINT_EFFECT_N
# 例子
# Update node 'foo' with a taint with key 'dedicated' and value 'special-user' and effect 'NoSchedule'
kubectl taint nodes foo dedicated=special-user:NoSchedule
# move from node 'foo' the taint with key 'dedicated' and effect 'NoSchedule' if one exists
kubectl taint nodes foo dedicated:NoSchedule-
# Remove from node 'foo' all the taints with key 'dedicated'
ubectl taint nodes foo dedicated-
kubectl alpha
但是我们会发现默认情况下
kubectl get events
并没有按照 events 发生的顺序进行排列,所以我们往往需要为其增加--sort-by='{.metadata.creationTimestamp}'
参数来让其输出可以按时间进行排列。这也是为何 Kubernetes v1.23 版本中会新增
kubectl alpha events
kubectl alpha events [--for TYPE/NAME] [--watch]
kubectl api-resources
kubectl completion SHELL
# 例子
# install bash-completion
source <(kubectl completion bash)
👉kubectl config - 修改 kubeconfig 文件
kubectl config current-context
kubectl config delete-cluster NAME
# 例子
kubectl config delete-cluster minikube
kubectl config delete-context NAME
# 例子
kubectl config delete-context minikube
kubectl config delete-user NAME
# 例子
kubectl config delete-user minikube
kubectl config get-clusters
kubectl config get-contexts [(-o|--output=)name)]
# 例子
# List all the contexts in your kubeconfig file
kubectl config get-contexts
# one
kubectl config get-contexts my-context
kubectl config get-users
kubectl config rename-context CONTEXT_NAME NEW_NAME
kubectl config set PROPERTY_NAME PROPERTY_VALUE
# 例子
kubectl config set clusters.my-cluster.server https://1.2.3.4
kubectl config set-cluster NAME [--server=server] [--certificate-authority=path/to/certificate/authority] [--insecure-skip-tls-verify=true] [--tls-server-name=example.com]
# 例子
# Set only the server field on the e2e cluster entry without touching other values
kubectl config set-cluster e2e --server=https://1.2.3.4
kubectl config set-context [NAME | --current] [--cluster=cluster_nickname] [--user=user_nickname] [--namespace=namespace]
# 例子
kubectl config set-context gce --user=cluster-admin
kubectl config set-credentials NAME [--client-certificate=path/to/certfile] [--client-key=path/to/keyfile] [--token=bearer_token] [--username=basic_user] [--password=basic_password] [--auth-provider=provider_name] [--auth-provider-arg=key=value] [--exec-command=exec_command] [--exec-api-version=exec_api_version] [--exec-arg=arg] [--exec-env=key=value]
# 例子
kubectl config set-credentials cluster-admin --client-key=~/.kube/admin.key
kubectl config unset PROPERTY_NAME
# 例子
kubectl config unset contexts.foo.namespace
kubectl config use-context CONTEXT_NAME
# 例子
kubectl config use-context minikube
kubectl config view
# 例子
kubectl config view
kubectl config view -o jsonpath='{.users[?(@.name == "e2e")].user.password}'
kubectl explain RESOURCE
# 例子
kubectl explain pods
kubectl explain pods.spec.containers
kubectl options
kubectl plugin list
kubectl version
kubectl 通过读取配置文件信息与 kubernetes 集群交互,默认配置文件路径是 ~/.kube/config
,内容可能如下:
$ cat ~/.kube/config
apiVersion: v1
clusters:
- cluster:
certificate-authority: /Users/deyuandeng/.minikube/ca.crt
server: https://192.168.99.100:8443
name: minikube
contexts:
- context:
cluster: minikube
user: minikube
name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
user:
client-certificate: /Users/deyuandeng/.minikube/apiserver.crt
client-key: /Users/deyuandeng/.minikube/apiserver.key
这里有三个重要的顶级概念: clusters
, users
和 contexts
。