1、kubectl config简介
kubectl config
使用像" kubectl config set current-context my-context "的子命令修改kubeconfig文件:
加载顺序遵循以下规则:
1)如果设置了--kubeconfig标志,则只加载该文件。该标志只能设置一次,并且不会发生合并。
2)如果设置了$KUBECONFIG环境变量,则将其用作路径列表(系统的普通路径分隔规则)。这些路径被合并。当一个值被修改时,它将在定义节的文件中被修改。当创建一个值时,它是在存在的第一个文件中创建的。如果链中不存在文件,则创建列表中的最后一个文件。
3)否则,${HOME}/.kube/config,不进行合并。
kubectl config current-context
显示当前上下文。
kubectl config delete-context
从kubeconfig中删除指定的上下文。
kubectl config get-contexts
显示kubeconfig文件中的一个或多个上下文。
kubectl config rename-context
重命名kubeconfig文件中的上下文。CONTEXT_NAME是想要更改的上下文名称。NEW_NAME是想要设置的新名称。
注意:如果被重命名的上下文是'current-context',该字段也将被更新。
kubectl config set-context
在kubeconfig中设置一个上下文条目。指定已经存在的名称将在这些字段的现有值之上合并新字段
kubectl config use-context
在kubeconfig文件中设置当前上下文。
kubectl config delete-cluster
从kubeconfig中删除指定的集群。
kubectl config get-clusters
显示kubeconfig中定义的集群。
kubectl config set-cluster
在kubeconfig中设置一个集群条目。指定已经存在的名称将在这些字段的现有值之上合并新字段。
kubectl config delete-user
从kubeconfig中删除指定用户。
kubectl config get-users
显示kubeconfig中定义的用户。
kubectl config set-credentials
在kubeconfig中设置一个用户条目。指定已经存在的名称将在现有值之上合并新字段。
客户端证书标志:--client-certificate =certfile --client-key =keyfile
不记名令牌标志:--token =bearer_token
基本认证标志:--username =basic_user --password =basic_password
承载令牌和基本认证互斥。
kubectl config set
在kubeconfig文件中设置单个值。PROPERTY_NAME是一个点分隔的名称,其中每个令牌表示属性名或map key。Map keys不能包含圆点。PROPERTY_VALUE是想要设置的新值。除非使用--set-raw-bytes标志,否则'certificate-authority-data'等二进制字段需要base64编码的字符串。指定已存在的属性名称将在现有值之上合并新字段。
kubectl config unset
取消设置kubeconfig文件中的单个值。PROPERTY_NAME是一个点分隔的名称,其中每个令牌表示属性名或map key。Map keys不能包含圆点。
kubectl config view
显示合并的kubeconfig设置或指定的kubeconfig文件。可以使用--output jsonpath={…}
使用jsonpath表达式来提取特定的值。
2、kubectl config语法
kubectl config SUBCOMMAND
kubectl config delete-context NAME
kubectl config get-contexts [(-o|--output=)name)]
kubectl config rename-context CONTEXT_NAME NEW_NAME
kubectl config set-context [NAME | --current] [--cluster=cluster_nickname] [--user=user_nickname] [--namespace=namespace]
kubectl config use-context CONTEXT_NAME
kubectl config delete-cluster NAME
kubectl config get-clusters
kubectl config set-cluster NAME [--server=server] [--certificate-authority=path/to/certificate/authority] [--insecure-skip-tls-verify=true] [--tls-server-name=example.com]
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 PROPERTY_NAME PROPERTY_VALUE
kubectl config unset PROPERTY_NAME
kubectl config view
3、kubectl config命令
1)显示当前上下文
kubectl config current-context
2)删除minikube集群
kubectl config delete-cluster minikube
3)删除minikube集群上下文
kubectl config delete-context minikube
4)删除minikube用户
kubectl config delete-user minikube
5)列出kubectl知道的集群
kubectl config get-clusters
6)列出kubeconfig文件中的所有上下文
kubectl config get-contexts
7)在kubeconfig文件中描述一个上下文
kubectl config get-contexts my-context
8)列出kubectl知道的用户
kubectl config get-users
9)在kubeconfig文件中将上下文'old-name'重命名为'new-name'
kubectl config rename-context old-name new-name
10)在my-cluster集群上设置server字段为https://1.2.3.4
kubectl config set clusters.my-cluster.server https://1.2.3.4
11)在my-cluster集群上设置certificate-authority-data字段
kubectl config set clusters.my-cluster.certificate-authority-data $(echo "cert_data_here" | base64 -i -)
12)将my-context上下文中的cluster字段设置为my-cluster
kubectl config set contexts.my-context.cluster my-cluster
13)使用--set-raw-bytes选项设置cluster-admin用户的client-key-data字段
kubectl config set users.cluster-admin.client-key-data cert_data_here --set-raw-bytes=true
14)只设置e2e集群条目上的server字段,不涉及其他值
kubectl config set-cluster e2e --server=https://1.2.3.4
15)为e2e集群条目嵌入证书颁发机构数据
kubectl config set-cluster e2e --embed-certs --certificate-authority=~/.kube/e2e/kubernetes.ca.crt
16)禁用dev集群条目的证书检查
kubectl config set-cluster e2e --insecure-skip-tls-verify=true
17)设置自定义TLS服务器名称,以用于对端到端集群条目进行验证
kubectl config set-cluster e2e --tls-server-name=my-cluster-name
18)在gce上下文条目上设置user字段,而不触及其他值
kubectl config set-context gce --user=cluster-admin
19)只在cluster-admin上设置client-key字段
kubectl config set-credentials cluster-admin --client-key=~/.kube/admin.key
20)为“cluster-admin”条目设置基本认证
kubectl config set-credentials cluster-admin --username=admin --password=password
21)将客户端证书数据嵌入到“cluster-admin”条目中
kubectl config set-credentials cluster-admin --client-certificate=~/.kube/admin.crt --embed-certs=true
22)为“cluster-admin”条目启用谷歌计算平台认证提供程序
kubectl config set-credentials cluster-admin --auth-provider=gcp
23)使用附加参数为“cluster-admin”条目启用OpenID Connect认证提供程序
kubectl config set-credentials cluster-admin --auth-provider=oidc --auth-provider-arg=client-id=cjavapy --auth-provider-arg=client-secret=bar
24)删除“cluster-admin”条目的OpenID Connect认证提供程序的“client-secret”配置值
kubectl config set-credentials cluster-admin --auth-provider=oidc --auth-provider-arg=client-secret-
25)为“cluster-admin”条目启用新的exec认证插件
kubectl config set-credentials cluster-admin --exec-command=/path/to/the/executable --exec-api-version=client.authentication.k8s.io/v1beta1
26)为“cluster-admin”条目定义新的exec auth插件args
kubectl config set-credentials cluster-admin --exec-env=key1=val1 --exec-env=key2=val2
27)删除“cluster-admin”条目的exec auth插件环境变量
kubectl config set-credentials cluster-admin --exec-env=var-to-remove-
28)取消设置当前上下文
kubectl config unset current-context
29)使用minikube集群的上下文
kubectl config use-context minikube
30)显示合并的kubeconfig设置
kubectl config view
31)显示合并的kubeconfig设置和原始证书数据
kubectl config view --raw
32)获取e2e用户的密码
kubectl config view -o jsonpath='{.users[?(@.name == "e2e")].user.password}'
4、选项说明
1)kubectl config get-context选项
名称 | 简称 | 默认 | 用法 |
no-headers | false | 当使用默认或自定义列输出格式时, 不要打印标题(默认打印标题)。 | |
output | o | 输出格式:name |
2)kubectl config set选项
名称 | 简称 | 默认 | 用法 |
set-raw-bytes | false | 当写入[]字节PROPERTY_VALUE时, 直接写入给定的字符串而不进行base64解码。 |
3)kubectl config set-cluster选项
名称 | 简称 | 默认 | 用法 |
embed-certs | false | 在kubeconfig中为集群条目嵌入证书 |
4)kubectl config set-context选项
名称 | 简称 | 默认 | 用法 |
current | false | 修改当前上下文 |
5) kubectl config set-credentials选项
名称 | 简称 | 默认 | 用法 |
auth-provider | kubeconfig中用户条目的认证提供程序 | ||
auth-provider-arg | [] | 身份验证提供程序的“key=value”参数 | |
embed-certs | false | 在kubeconfig中嵌入用户条目的客户端证书/密钥 | |
exec-api-version | kubeconfig中用户条目的exec凭据插件的API版本 | ||
exec-arg | [] | kubeconfig中用户条目的exec凭据插件命令的新参数 | |
exec-command | 命令用于kubeconfig中的用户条目的exec凭据插件 | ||
exec-env | [] | 'key=value'用于exec凭据插件的环境值 |
6) kubectl config view选项
名称 | 简称 | 默认 | 用法 |
allow-missing-template-keys | true | 如果为true,当模板中缺少字段或映射键时, 忽略模板中的任何错误。 只适用于golang和jsonpath输出格式。 | |
flatten | false | 将生成的kubeconfig文件压扁为 独立的输出(用于创建可移植的kubeconfig文件) | |
merge | true | 合并kubeconfig文件的完整层次结构 | |
minify | false | 从输出中删除当前上下文不使用的所有信息 | |
output | o | yaml | 输出格式。 以下之一: json|yaml|name|go-template| go-template-file|template| templatefile|jsonpath| jsonpath-as-json|jsonpath-file。 |
raw | false | 显示原始字节数据 | |
show-managed-fields | false | 如果为true,则在以JSON或YAML格式 打印对象时保留managedFields。 | |
template | 当-o=go-template, -o=go-template-file时 要使用的模板文件的模板字符串或路径。 模板格式为 golang templates [ http://golang.org/pkg/text/template/#pkg-overview ]。 |