Kubernetes(k8s) kubectl config常用命令

kubectl 在 $HOME/.kube 目录中查找一个名为 config 的配置文件。 可以通过设置 KUBECONFIG 环境变量或设置 --kubeconfig 参数来指定其它 kubeconfig 文件。本文主要介绍Kubernetes(K8s)中kubectl config常用命令。

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

]。

推荐阅读
cjavapy编程之路首页