对象的创建与修改命令
kubectl apply # 声明对象
通过文件或 STDIN(标准输入)声明配置到一个资源中,如果该资源不存在,则会根据所声明的内容自动创建。
有时候我们在使用 apply 应用一个对象时,会遇上类似如下的提示:
The CustomResourceDefinition "XXXXX" is invalid: metadata.annotations: Too long: must have at most 262144 bytes
一个 Manifests 文件太大导致无法 apply,才是就需要使用 replace 来修改对象。或者为 apply 子命令添加 --server-side
标志。
Syntax(语法)
kubectl apply -f FILENAME [OPTIONS]
OPTIONS
- –record # 在资源注释中记录当前 kubectl 命令。 如果设置为 false,请不要记录该命令。 如果设置为 true,则记录该命令。 如果未设置,则默认仅在已存在的情况下更新现有注释值。
- –server-side #
kubectl edit # 修改对象
kubectl edit (RESOURCE/NAME | -f FILENAME) [OPTIONS]
OPTIONS:
- –save-config=false|true #
EXAMPLE
- kubectl edit -n service kube-system kubernetes-dashboard
kubectl replace # 替换。使用文件或标准输入替换一个资源
Syntax(语法)
kubectl replace -f FILENAME [options]
EXAMPLE
- 重启指定的容器
- kubectl get pod {podname} -n {namespace} -o yaml | kubectl replace –force -f -
kubectl create # 从一个文件或者标准输入中创建一个对象
参考:
注意:并不是所有资源都可以通过命令行在标准输入中创建,但是所有资源都可以通过文件来创建一个对象。
kubectl create [COMMAND] [OPTIONS] Command:
- clusterrole
- clusterrolebinding
- configmap
- cronjob
- deployment
- ingress
- job
- namespace
- poddisruptionbudget
- priorityclass
- quota
- role
- rolebinding
- secret
- service
- serviceaccount
configmap
通过文件、目录或者指定的 literal 值创建一个 configmap(配置中心)
kubectl create configmap NAME [–from-file=[key=]source] [–from-literal=key1=value1] [–dry-run] [OPTIONS]
OPTIONS
- –from-env-file=’’ # Specify the path to a file to read lines of key=val pairs to create a configmap (i.e. a Docker .env file).
- –from-file=[KEY=]/PATH/FILE # 键(KEY)文件可以使用文件路径指定,在这种情况下,文件名将作为 configmap 中的键值;或者可以指定键值和文件路径,这时候 configmap 中的键值,是指定的 KEY 的值,效果如 EXAMPLE 图
- –from-literal=[] # Specify a key and literal value to insert in configmap (i.e. mykey=somevalue)
EXAMPLE
- 浅蓝色框为键/值对的键,红框文件中内容为键/值对的值,如果使用命令的时候不指定 KEY,则 yaml 格式的 configmap 的 data 下面字段的 KEY 为 www.conf
- kubectl create configmap nginx-www –from-file=www=./www.conf
RBAC 相关资源 # 创建角色对象的相关命令
通用 OPTIONS:
- –dry-run# 干跑一遍,意思是仅把结果打印到屏幕上而不真的创建这个对象,默认为关。常与 -o 连用,用来测试命令执行结果
- -o <json|yaml|name|templatefile|template|go-template|go-template-file|jsonpath-file|jsonpath># 选择输出信息的输出格式
- –serviceaccount=[]# 服务帐户绑定到角色, in the format <namespace>:<name>
role
kubectl create role NAME –verb=VERB –resource=RESOURCE[.GROUP/SubResource] [–resource-name=RESOURCE] [OPTIONS] VERB 是指明该 role 可以执行的动作(命令)且多个动作以逗号间隔,GROUP 省略时,则默认核心组,apiGroups 字段值为 “"。
OPTIONS
- –allow-missing-template-keys=true: If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.
- –resource=<RESOURCE> # 指定该 role 的规则,作用于哪些资源。RESOURCE 以
资源名.API组
的方式命名,多个资源以逗号分隔。如果想要指定所有资源,则 RESOURCE 为 . - –resource-name=[] # Resource in the white list that the rule applies to, repeat this flag for multiple items
- –save-config=false # 如果为 true,则当前对象的配置将保存在其注释中。 否则,注释将保持不变。 当您将来希望对这个对象执行 kubectl 应用时,此标志很有用。
- –template=’’: Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].
- –validate=true: If true, use a schema to validate the input before sending it
- –verb=<VERB> # 指明该 role 可以执行的动作(命令),多个动作以逗号间隔
EXAMPLE
- kubectl create role lch -n lch –verb=–resource=.* # 在 lch 名称空间中创建一个名为 lch 的角色,可以对所有 API 组下的所有资源,执行任何操作。
- kubectl create role pods-reader –verb=get,list,watch –resource=pods –dry-run -o yaml # 创建一个名为 pods-reader 的角色,只能对核心 API 组下的 pods 资源,执行 get、list、watch 操作。仅运行不真正创建,并输出 yaml 格式的信息。
rolebinding
kubectl create rolebinding NAME –clusterrole=NAME|–role=NAME [–user=username] [–group=groupname][–serviceaccount=namespace:serviceaccountname] [OPTIONS] # 绑定 role 或者 clusterrole 其中之一并指明 rolebinding 资源的名称
EXAMPLE
- 在 lch 名称空间中创建一个名为 lch 的角色绑定,将 lch 角色与 lch 用户绑定。
- kubectl create rolebinding lch -n lch –role=lch –user=lch
- kubectl create rolebinding lch -n test –role=lch –serviceaccount=test:lch
- 创建一个 rolebinding 资源并把 pods-reader 这个 role 与 lch 这个用户绑定起来
- kubectl create rolebinding bind-lch-read –role=pods-reader –user=lch
clusterrole
kubectl create clusterrole NAME –verb=VERB –resource=RESOURCE.GROUP [–resource-name=resourcename]
EXAMPLE
- kubectl create clusterrole cluster-reader –verb=get,list,watch –resource=pods
clusterrolebinding
kubectl create clusterrolebinding NAME –clusterrole=NAME [–user=username] [–group=groupname][–serviceaccount=namespace:serviceaccountname] [OPTIONS] # 只能绑定 clusterrole 并指定 clusterrolebinding 资源的名称
EXAMPLE
- kubectl create clusterrolebinding bind-lch-allreader –clusterrole=cluster=reader –user=lch
- kubectl create clusterrolebinding dashboard-cluster-admin –clusterrole=cluster-admin –serviceaccount=kube-system:dashboard-admin
secret # 使用指定的子命令创建 secret 对象
SubCommand:
- docker-registry # Create a secret for use with a Docker registry
- generic # 从本地文件、目录或文字值创建一个秘密
- tls # Create a TLS secret
kubectl create secret docker-registry NAME –docker-username=user –docker-password=password –docker-email=email [–docker-server=string] [–from-literal=key1=value1] [–dry-run] [options]
kubectl create secret generic NAME [–type=string] [–from-file=[key=]source] [–from-literal=key1=value1] [–dry-run] [options]
EXAMPLE
- 无用,创建 serviceaccount 时会自动创建,仅作语句格式参考
- kubectl create secret generic dashboard-cert -n kube-system –from-file=dashboard.crt=dashboard.crt –from-file=dashboard.key=dashboard.key
kubectl create secret tls NAME –cert=path/to/cert/file –key=path/to/key/file [–dry-run] [options]
serviceaccount # 使用指定的名字创建一个 ServiceAccount(服务账户)对象
kubectl create serviceaccount NAME [–dry-run] [OPTIONS]
EXAMPLE
- 在 kube-system 名称空间中创建一个名为 dashboard-dashboard 的 serviceaccount
- kubectl create serviceaccount dashboard-dashboard -n kube-system
反馈
此页是否对你有帮助?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.