kubectl
2022-07-27 16:21:13 18 举报
AI智能生成
登录查看完整内容
k8s kubectl命令
作者其他创作
大纲/内容
kubectl
是使用K8S API与K8S集群控制平面进行通信的命令行工具
定义
JSONPath 模板由 {} 包起来的 JSONPath 表达式组成
使用双引号将 JSONPath 表达式内的文本引起来
使用 range,end 运算符来迭代列表
使用负片索引后退列表。负索引不会“环绕”列表,并且只要 -index + listLength> = 0 就有效
有效语法
text
@
. or []
..
*
[start:end :step]
?()
''
json对象=>
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=\
kubectl get pods -o=jsonpath='{range .items[*]}{.metadata.name}{\"\\t\"}{.status.startTime}{\"\\"}{end}'
示例
JSONPath支持
Main Topic
在可重用脚本中使用 kubectl
可以将 --subresource alpha 标志用于 kubectl 命令
针对子资源的 API 协定与完整资源相同
Subresources
kubectl run
kubectl apply
最佳实践
用法约定
# 启动运行 nginx 的 Podkubectl create deployment --image=nginx nginx-app# 添加环境变量到nginx-app Podkubectl set env deployment/nginx-app DOMAIN=cluster# 通过服务公开端口kubectl expose deployment nginx-app --port=80 --name=nginx-http
docker run -d --restart=always -e DOMAIN=cluster --name nginx-app -p 80:80 nginx
kubectl get po
docker ps -a
kubectl get pods #获取Pod名字nginx-app-5jyvmkubectl attach -it nginx-app-5jyvm
docker ps #获取容器IDdocker attach 55c103fa1296
与docker等效的kubectl命令
从文件或stdin创建资源。
kubectl create -f FILENAME [flags]
create
kubectl expose (-f FILENAME | TYPE NAME | TYPE/NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type] [flags]
expose
在集群上运行一个特定的镜像
kubectl run NAME --image=image [--env=\"key=value\"] [--port=port] [--dry-run=server | client | none] [--overrides=inline-json] [flags]
run
设置对象的特定特性
kubectl set SUBCOMMAND [options]
set
显示资源文档
kubectl explain [--recursive=false] [flags]
explain
显示一个或多个资源
以纯文本输出格式列出所有 Pod
kubectl get pods
以纯文本输出格式列出所有 Pod,并包含附加信息(如节点名)
kubectl get pods -o wide
以纯文本输出格式列出具有指定名称的副本控制器
kubectl get replicationcontroller <rc-name>
以纯文本输出格式列出所有副本控制器和服务
以纯文本输出格式列出所有守护程序集,包括未初始化的守护程序集
kubectl get ds --include-uninitialized
列出在节点 server01 上运行的所有 Pod
kubectl get pods --field-selector=spec.nodeName=server01
kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags]
get
在服务器上编辑资源
kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags]
edit
按文件名、标准输入、资源和名称或按资源和标签选择器删除资源
使用 pod.yaml 文件中指定的类型和名称删除 Pod
kubectl delete -f pod.yaml
删除所有带有 '<label-key>=<label-value>' 标签的 Pod 和服务
删除所有 Pod,包括未初始化的 Pod
kubectl delete pods --all
kubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | --all]) [flags]
delete
基本命令
管理资源的上线
kubectl rollout SUBCOMMAND [options]
rollout
kubectl scale (-f FILENAME | TYPE NAME | TYPE/NAME) --replicas=COUNT [--resource-version=version] [--current-replicas=count] [flags]
scale
自动扩展Deployment、ReplicaSet、StatefulSet或ReplicationController
kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]
autoscale
部署命令
修改证书资源
kubectl certificate SUBCOMMAND [options]
certificate
显示集群信息
kubectl cluster-info [flags]
cluster-info
显示资源(CPU/内存)使用情况
kubectl top [flags] [options]
top
将节点标记为不可调度
kubectl cordon NODE [options]
cordon
将节点标记为可调度
kubectl uncordon NODE [options]
uncordon
腾空节点为维护做准备
kubectl drain NODE [options]
drain
更新一个或多个节点上的污点
kubectl taint NODE-NAME KEY_1=VAL_1:TAINT_EFFECT_1 ... KEY_N=VAL_N:TAINT_EFFECT_N [options]
taint
集群管理命令
显示指定资源或一组资源的详细信息
显示名为 <pod-name> 的 node 的详细信息
kubectl describe nodes <node-name>
显示名为 <pod-name> 的 Pod 的详细信息
kubectl describe pods <pod-name>
显示由名为 <rc-name> 的副本控制器管理的所有 Pod 的详细信息。记住:副本控制器创建的任何 Pod 都以副本控制器的名称为前缀。
kubectl describe pods <rc-name>
描述所有的 Pod
kubectl describe pods
kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags]
describe
打印 Pod 中容器的日志
查看名为 <pod-name> 的Pod日志
kubectl logs <pod-name>
从 Pod <pod-name> 开始流式传输日志。这类似于 'tail -f' 的Linux 命令
kubectl logs -f <pod-name>
kubectl logs POD [-c CONTAINER] [--follow] [flags]
logs
挂接到正在运行的容器,查看输出流或与容器(stdin)交互
kubectl attach POD -c CONTAINER [-i] [-t] [flags]
attach
对 Pod 中的容器执行命令
从 Pod <pod-name> 中获取运行 'date' 的输出。默认情况下,输出来自第一个容器
kubectl exec <pod-name> -- date
运行输出 'date' 获取在 Pod <pod-name> 中容器 <container-name> 的输出
kubectl exec <pod-name> -c <container-name> -- date
获取一个交互 TTY 并在 Pod <pod-name> 中运行 /bin/bash。默认情况下,输出来自第一个容器
kubectl exec -ti <pod-name> -- /bin/bash
kubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [-- COMMAND [args...]]
exec
将一个或多个本地端口转发到一个 Pod上
kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] [flags]
port-forward
运行访问 Kubernetes API 服务器的代理
kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [flags]
proxy
从容器复制文件、目录或将文件、目录复制到容器
kubectl cp <file-spec-src> <file-spec-dest> [options]
cp
检查授权
kubectl auth [flags] [options]
auth
创建调试会话,用于排除工作负载和节点故障
debug
故障排除和调试命令
将正在运行的版本与将要应用的版本进行对比
“pod.json”中包含的差异资源
kubectl diff -f pod.json
从标准输入读取的差异文件
cat service.yaml | kubectl diff -f -
kubectl diff -f FILENAME [flags]
diff
从文件或 stdin 对资源应用配置更改
使用 example-service.yaml 中的定义创建服务
kubectl apply -f example-service.yaml
使用 example-controller.yaml 中的定义创建 replication controller
kubectl apply -f example-controller.yaml
使用 <directory> 路径下的任意 .yaml、.yml 或 .json 文件 创建对象
kubectl apply -f <directory>
kubectl apply -f FILENAME [flags]
apply
使用策略合并流程更新资源的一个或多个字段
kubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) --patch PATCH [flags]
patch
通过文件或标准输入替换资源
kubectl replace -f FILENAME
replace
实验特性:等待一种或多种资源的特定状况
kubectl wait ([-f FILENAME] | resource.group/resource.name | resource.group [(-l label | --all)]) [--for=delete|--for condition=available] [options]
wait
列出从 kustomization.yaml 文件中的指令生成的一组 API 资源。参数必须是包含文件的目录的路径,或者是 git 存储库 URL,其路径后缀相对于存储库根目录指定了相同的路径。
kustomize
高级命令
添加或更新一个或多个资源的标签
kubectl label (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags]
label
添加或更新一个或多个资源的注解
kubectl annotate (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags]
annotate
为指定的 Shell(Bash 或 Zsh)输出 Shell 补齐代码
kubectl completion SHELL [options]
completion
设置命令
列出可用的 API 资源
kubectl api-resources [flags]
api-resources
列出可用的 API 版本
kubectl api-versions [flags]
api-versions
修改 kubeconfig 文件
kubectl config SUBCOMMAND [flags]
config
提供用于与插件交互的实用程序
kubectl plugin [flags] [options]
plugin
显示运行在客户端和服务器上的 Kubernetes 版本
kubectl version [--client] [flags]
version
其他命令
指定要对一个或多个资源执行的操作
command
不区分大小写
例: kubectl get pod pod1
可以单数
例: kubectl get pods pod1
可以复数
例: kubectl get po pod1
可以缩写
资源类型
TYPE
名称区分大小写
资源的名称
NAME
要按类型和名称指定资源
语法:TYPE1 name1 name2 name<#>
例:kubectl get pod example-pod1 example-pod2
要对所有类型相同的资源进行分组
语法: TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>
例子:kubectl get pod/example-pod1 replicationcontroller/example-rc1
分别指定多个资源类型
语法: -f file1 -f file2 -f file<#>
建议使用yaml文件
用一个或多个文件指定资源
操作多个资源时
设置为 true 表示添加文件目录到日志信息头中
--add-dir-header
表示将日志输出到文件的同时输出到 stderr
--alsologtostderr
以指定用户的身份执行操作
string
--as
模拟指定的组来执行操作,可以使用这个标志来指定多个组
stringArray
--as-group
包含 Azure 容器仓库配置信息的文件的路径
--azure-container-registry-config
缓存目录
默认值: \"$HOME/.kube/cache\"
--cache-dir
证书颁发机构的证书文件路径
--certificate-authority
TLS 使用的客户端证书路径
--client-certificate
TLS 使用的客户端密钥文件路径
--client-key
在 GCE 防火墙中开放的 CIDR,用来进行 L7 LB 流量代理和健康检查
值类型: cidrs
--cloud-provider-gce-l7lb-src-cidrs
在 GCE 防火墙中开放的 CIDR,用来进行 L4 LB 流量代理和健康检查
--cloud-provider-gce-lb-src-cidrs
要使用的 kubeconfig 集群的名称
--cluster
要使用的 kubeconfig 上下文的名称
--context
为notReady:NoExecute设定tolerationSeconds的容忍值,该值默认添加到每个没有这种容忍值的pod
int
默认值: 300
--default-not-ready-toleration-seconds
为unreachable:NoExecute设定tolerationSeconds的容忍值,该值默认添加到每个没有这种容忍值的pod
--default-unreachable-toleration-seconds
查看kubectl 操作的帮助命令
设置为 true,则表示不会检查服务器证书的有效性,这样会导致 HTTPS 连接不安全
--insecure-skip-tls-verify
CLI 请求使用的 kubeconfig 配置文件的路径
--kubeconfig
当日志机制运行到指定文件的指定行(file:N)时,打印堆栈跟踪信息
--log-backtrace-at traceLocation
如果不为空,则将日志文件写入此目录
--log-dir
如果不为空,则将使用此日志文件
--log-file
定义日志文件的最大尺寸。单位为兆字节。如果值设置为 0,则表示日志文件大小不受限制。
uint
默认值: 1800
--log-file-max-size
两次日志刷新操作之间的最长时间(秒)
duration
默认值: 5s
--log-flush-frequency
日志输出到 stderr 而不是文件中
默认值: true
--logtostderr
要求客户端版本和服务端版本相匹配
--match-server-version
如果有值,CLI 请求将使用此命名空间
如果为真,则仅将日志写入其本机严重性级别(而不是写入每个较低的严重性级别
--one-output
API 服务器进行基本身份验证的密码
--password
要捕获的配置文件的名称。
默认值: \"none\"
可选值: none|cpu|heap|goroutine|threadcreate|block|mutex
--profile
用于转储所记录的性能信息的文件名
默认值: \"profile.pprof\"
--profile-output
放弃单个服务器请求之前的等待时间
非零值需要包含相应时间单位(例如:1s、2m、3h)
零值则表示不做超时要求
默认值: \"0\"
--request-timeout
Kubernetes API 服务器的地址和端口
设置为 true 则表示跳过在日志消息中出现 header 前缀信息
--skip-headers
设置为 true 则表示在打开日志文件时跳过 header 信息
--skip-log-headers
达到或超过此阈值的日志将被转到stderr
severity
默认值: 2
--stderrthreshold
用于对 API 服务器进行身份认证的持有者令牌
--token
指定使用 kubeconfig 配置文件中的用户名
--user
用于 API 服务器的基本身份验证的用户名
--username
指定输出日志的日志详细级别
打印 kubectl 版本信息并退出
version[=true]
--version
以逗号分隔的 pattern=N 设置列表,用于过滤文件的日志记录
moduleSpec
--vmodule
将从服务器接收到的警告视为错误,并使用非零退出码退出
--warnings-as-errors
flags
kubectl [command] [TYPE] [NAME] [flags]
语法
0 条评论
回复 删除
下一页