资源管理

概述

1、在 Kubernetes 中,所有内容都抽象为资源,用户需要通过操作资源来管理 Kubernetes

2、Kubernetes 本质是一个集群系统,用户可以在集群中部署各种服务,

(1)部署服务就是在 Kubernetes 集群中运行一个个容器,并将在容器中运行指定容器

(2)Kubernetes 的最小管理单元是 Pod 而不是容器,所以只能将容器放在 Pod 中,而 Kubernetes 一般不会直接管理 Pod,而是通过 Pod 控制器来管理 Pod

(3)Pod 可以提供服务之后,Kubernetes 提供 Service 资源来访问 Pod 中服务

(4)如果 Pod 中程序的数据需要持久化,Kubernetes 还提供了各种存储系统

 

YAML

1、标记语言

2、基本语法

(1)key: value

(2)冒号之后需要一个空格

(3)大小写敏感

(4)使用缩进表示层级关系

(5)缩进不允许使用 Tab,只允许空格

(6)缩进的空格数不重要,只要相同层级的元素左对齐即可

(7)# 表示注释

(8)字符串无需加引号

(9)'' 表示字符串内容被转义;"" 不会对字符串内容转义

(10)引用:& 用来建立锚点(defaults),<< 表示合并到当前数据,* 用来引用锚点

 

数据类型

1、字面量 / 纯量 / 标量(scalars)

(1)单个、不可再分的值

(2)字符串布尔值、整数、浮点数、Null、时间、日期

(3)格式

key: value

2、对象

(1)键值对的集合,又称为映射(mapping)/ 哈希(hashes)/ 字典(dictionary)

(2)map、hash、set、object

(3)对象键值对使用冒号结构表示 key: value,冒号后面要加一个空格

(4)行内写法

key: {key1:value1,key2:value2,key3:value3}

(5)对象表示法,使用缩进表示层级关系

key:
  key1: value1
  key2: value2
  key3: value3

(6)较为复杂的对象格式,可以使用问号加一个空格代表一个复杂的 key,配合一个冒号加一个空格代表一个 value

#意思即对象的属性是一个数组 [complexkey1,complexkey2],对应的值也是一个数组 [complexvalue1,complexvalue2]
? 
    - complexkey1
    - complexkey2
: 
    - complexvalue1
    - complexvalue2

3、数组

(1)一组按次序排列的值,又称为序列(sequence)/ 列表(list)

(2)array、list、queue

(3)以 - 开头的行表示构成一个数组

- A
- B
- C

(4)行内写法,支持多维数组

key: [value1, value2, value3 ...]

(5)常规写法

key:
 - value1
 - value2
 - value3

(6)数据结构的子成员是一个数组,则可以在该项下面缩进一个空格

-
 - A
 - B
 - C

(7)一个相对复杂的例子

#意思是 companies 属性是一个数组,每一个数组元素又是由 id、name、price 三个属性构成。
companies:
    -
        id: 1
        name: company1
        price: 200W
    -
        id: 2
        name: company2
        price: 500W

#数组也可以使用流式(flow)的方式表示
companies: [{id: 1,name: company1,price: 200W},{id: 2,name: company2,price: 500W}]

 

命令行工具(kubectl)

1、Kubernetes 提供 kubectl 是使用 Kubernetes API 与 Kubernetes 集群的控制面进行通信的命令行工具

2、针对配置信息,kubectl 在 $HOME/.kube 目录中查找一个名为 config 的配置文件,可以通过设置 KUBECONFIG 环境变量或设置 --kubeconfig 参数来指定其它 kubeconfig 文件。

3、语法

kubectl [command] [TYPE] [NAME] [flags]

(1)command:指定要对一个或多个资源执行的操作

(2)TYPE:指定资源类型。资源类型不区分大小写, 可以指定单数、复数或缩写形式

(3)NAME:指定资源的名称。名称区分大小写。 如果省略名称,则显示所有资源的详细信息

(4)在对多个资源执行操作时,你可以按类型和名称指定每个资源,或指定一个或多个文件:

(5)要按类型和名称指定资源

(6)要对所有类型相同的资源进行分组,请执行以下操作:TYPE1 name1 name2 name<#>。

(7)分别指定多个资源类型:TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>

(8)用一个或多个文件指定资源:-f file1 -f file2 -f file<#>

(9)使用 YAML 而不是 JSON, 因为 YAML 对用户更友好, 特别是对于配置文件

(10)flags: 指定可选的参数

(11)注意:从命令行指定的参数会覆盖默认值和任何相应的环境变量

(12)如果你需要帮助,在终端窗口中运行 kubectl help

4、操作

操作 语法 描述
alpha kubectl alpha SUBCOMMAND [flags] 列出与 alpha 特性对应的可用命令,这些特性在 Kubernetes 集群中默认情况下是不启用的。
annotate kubectl annotate (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] 添加或更新一个或多个资源的注解。
api-resources kubectl api-resources [flags] 列出可用的 API 资源。
api-versions kubectl api-versions [flags] 列出可用的 API 版本。
apply kubectl apply -f FILENAME [flags] 从文件或 stdin 对资源应用配置更改。
attach kubectl attach POD -c CONTAINER [-i] [-t] [flags] 挂接到正在运行的容器,查看输出流或与容器(stdin)交互。
auth kubectl auth [flags] [options] 检查授权。
autoscale kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags] 自动扩缩由副本控制器管理的一组 pod。
certificate kubectl certificate SUBCOMMAND [options] 修改证书资源。
cluster-info kubectl cluster-info [flags] 显示有关集群中主服务器和服务的端口信息。
completion kubectl completion SHELL [options] 为指定的 Shell(Bash 或 Zsh)输出 Shell 补齐代码。
config kubectl config SUBCOMMAND [flags] 修改 kubeconfig 文件。有关详细信息,请参阅各个子命令。
convert kubectl convert -f FILENAME [options] 在不同的 API 版本之间转换配置文件。配置文件可以是 YAML 或 JSON 格式。注意 - 需要安装 kubectl-convert 插件。
cordon kubectl cordon NODE [options] 将节点标记为不可调度。
cp kubectl cp <file-spec-src> <file-spec-dest> [options] 从容器复制文件、目录或将文件、目录复制到容器。
create kubectl create -f FILENAME [flags] 从文件或 stdin 创建一个或多个资源。
delete kubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | --all]) [flags] 基于文件、标准输入或通过指定标签选择器、名称、资源选择器或资源本身,删除资源。
describe kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags] 显示一个或多个资源的详细状态。
diff kubectl diff -f FILENAME [flags] 在当前起作用的配置和文件或标准输之间作对比 (BETA)
drain kubectl drain NODE [options] 腾空节点以准备维护。
edit kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags] 使用默认编辑器编辑和更新服务器上一个或多个资源的定义。
events kubectl events 列举事件。
exec kubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [-- COMMAND [args...]] 对 Pod 中的容器执行命令。
explain kubectl explain [--recursive=false] [flags] 获取多种资源的文档。例如 Pod、Node、Service 等。
expose 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] 将副本控制器、服务或 Pod 作为新的 Kubernetes 服务暴露。
get kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags] 列出一个或多个资源。
kustomize kubectl kustomize[flags] [options]` 列出从 kustomization.yaml 文件中的指令生成的一组 API 资源。参数必须是包含文件的目录的路径,或者是 git 存储库 URL,其路径后缀相对于存储库根目录指定了相同的路径。
label kubectl label (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] 添加或更新一个或多个资源的标签。
logs kubectl logs POD [-c CONTAINER] [--follow] [flags] 打印 Pod 中容器的日志。
options kubectl options 全局命令行选项列表,这些选项适用于所有命令。
patch kubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) --patch PATCH [flags] 使用策略合并流程更新资源的一个或多个字段。
plugin kubectl plugin [flags] [options] 提供用于与插件交互的实用程序。
port-forward kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] [flags] 将一个或多个本地端口转发到一个 Pod。
proxy kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [flags] 运行访问 Kubernetes API 服务器的代理。
replace kubectl replace -f FILENAME 基于文件或标准输入替换资源。
rollout kubectl rollout SUBCOMMAND [options] 管理资源的上线。有效的资源类型包括:Deployment、 DaemonSet 和 StatefulSet。
run kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server | client | none] [--overrides=inline-json] [flags] 在集群上运行指定的镜像。
scale kubectl scale (-f FILENAME | TYPE NAME | TYPE/NAME) --replicas=COUNT [--resource-version=version] [--current-replicas=count] [flags] 更新指定副本控制器的大小。
set kubectl set SUBCOMMAND [options] 配置应用资源。
taint kubectl taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 ... KEY_N=VAL_N:TAINT_EFFECT_N [options] 更新一个或多个节点上的污点。
top kubectl top [flags] [options] 显示资源(CPU、内存、存储)的使用情况。
uncordon kubectl uncordon NODE [options] 将节点标记为可调度。
version kubectl version [--client] [flags] 显示运行在客户端和服务器上的 Kubernetes 版本。
wait kubectl wait ([-f FILENAME] | resource.group/resource.name | resource.group [(-l label | --all)]) [--for=delete|--for condition=available] [options] 实验特性:等待一种或多种资源的特定状况。

5、资源类型

(1)以下输出可以通过 kubectl api-resources 获取

(2)内容以 Kubernetes 1.25.0 版本为准

资源名 缩写名 API 版本 按命名空间 资源类型
bindings   v1 true Binding
componentstatuses cs v1 false ComponentStatus
configmaps cm v1 true ConfigMap
endpoints ep v1 true Endpoints
events ev v1 true Event
limitranges limits v1 true LimitRange
namespaces ns v1 false Namespace
nodes no v1 false Node
persistentvolumeclaims pvc v1 true PersistentVolumeClaim
persistentvolumes pv v1 false PersistentVolume
pods po v1 true Pod
podtemplates   v1 true PodTemplate
replicationcontrollers rc v1 true ReplicationController
resourcequotas quota v1 true ResourceQuota
secrets   v1 true Secret
serviceaccounts sa v1 true ServiceAccount
services svc v1 true Service
mutatingwebhookconfigurations   admissionregistration.k8s.io/v1 false MutatingWebhookConfiguration
validatingwebhookconfigurations   admissionregistration.k8s.io/v1 false ValidatingWebhookConfiguration
customresourcedefinitions crd,crds apiextensions.k8s.io/v1 false CustomResourceDefinition
apiservices   apiregistration.k8s.io/v1 false APIService
controllerrevisions   apps/v1 true ControllerRevision
daemonsets ds apps/v1 true DaemonSet
deployments deploy apps/v1 true Deployment
replicasets rs apps/v1 true ReplicaSet
statefulsets sts apps/v1 true StatefulSet
tokenreviews   authentication.k8s.io/v1 false TokenReview
localsubjectaccessreviews   authorization.k8s.io/v1 true LocalSubjectAccessReview
selfsubjectaccessreviews   authorization.k8s.io/v1 false SelfSubjectAccessReview
selfsubjectrulesreviews   authorization.k8s.io/v1 false SelfSubjectRulesReview
subjectaccessreviews   authorization.k8s.io/v1 false SubjectAccessReview
horizontalpodautoscalers hpa autoscaling/v2 true HorizontalPodAutoscaler
cronjobs cj batch/v1 true CronJob
jobs   batch/v1 true Job
certificatesigningrequests csr certificates.k8s.io/v1 false CertificateSigningRequest
leases   coordination.k8s.io/v1 true Lease
endpointslices   discovery.k8s.io/v1 true EndpointSlice
events ev events.k8s.io/v1 true Event
flowschemas   flowcontrol.apiserver.k8s.io/v1beta2 false FlowSchema
prioritylevelconfigurations   flowcontrol.apiserver.k8s.io/v1beta2 false PriorityLevelConfiguration
ingressclasses   networking.k8s.io/v1 false IngressClass
ingresses ing networking.k8s.io/v1 true Ingress
networkpolicies netpol networking.k8s.io/v1 true NetworkPolicy
runtimeclasses   node.k8s.io/v1 false RuntimeClass
poddisruptionbudgets pdb policy/v1 true PodDisruptionBudget
podsecuritypolicies psp policy/v1beta1 false PodSecurityPolicy
clusterrolebindings   rbac.authorization.k8s.io/v1 false ClusterRoleBinding
clusterroles   rbac.authorization.k8s.io/v1 false ClusterRole
rolebindings   rbac.authorization.k8s.io/v1 true RoleBinding
roles   rbac.authorization.k8s.io/v1 true Role
priorityclasses pc scheduling.k8s.io/v1 false PriorityClass
csidrivers   storage.k8s.io/v1 false CSIDriver
csinodes   storage.k8s.io/v1 false CSINode
csistoragecapacities   storage.k8s.io/v1 true CSIStorageCapacity
storageclasses sc storage.k8s.io/v1 false StorageClass
volumeattachments   storage.k8s.io/v1 false VolumeAttachment

6、选项

--add-dir-header 设置为 true 表示添加文件目录到日志信息头中
--alsologtostderr 表示将日志输出到文件的同时输出到 stderr
--as string 以指定用户的身份执行操作
--as-group stringArray 模拟指定的组来执行操作,可以使用这个标志来指定多个组。
--azure-container-registry-config string 包含 Azure 容器仓库配置信息的文件的路径。
--cache-dir string     默认值: "$HOME/.kube/cache" 默认缓存目录
--certificate-authority string 指向证书机构的 cert 文件路径
--client-certificate string TLS 使用的客户端证书路径
--client-key string TLS 使用的客户端密钥文件路径
--cloud-provider-gce-l7lb-src-cidrs cidrs     默认值: 130.211.0.0/22,35.191.0.0/16 在 GCE 防火墙中开放的 CIDR,用来进行 L7 LB 流量代理和健康检查。
--cloud-provider-gce-lb-src-cidrs cidrs     默认值: 130.211.0.0/22,209.85.152.0/22,209.85.204.0/22,35.191.0.0/16 在 GCE 防火墙中开放的 CIDR,用来进行 L4 LB 流量代理和健康检查。
--cluster string 要使用的 kubeconfig 集群的名称
--context string 要使用的 kubeconfig 上下文的名称
--default-not-ready-toleration-seconds int     默认值: 300 表示 `notReady` 状态的容忍度秒数:默认情况下,`NoExecute` 被添加到尚未具有此容忍度的每个 Pod 中。
--default-unreachable-toleration-seconds int     默认值: 300 表示 `unreachable` 状态的容忍度秒数:默认情况下,`NoExecute` 被添加到尚未具有此容忍度的每个 Pod 中。
-h, --help kubectl 操作的帮助命令
--insecure-skip-tls-verify 设置为 true,则表示不会检查服务器证书的有效性。这样会导致你的 HTTPS 连接不安全。
--kubeconfig string CLI 请求使用的 kubeconfig 配置文件的路径。
--log-backtrace-at traceLocation     默认值: 0 当日志机制运行到指定文件的指定行(file:N)时,打印调用堆栈信息
--log-dir string 如果不为空,则将日志文件写入此目录
--log-file string 如果不为空,则将使用此日志文件
--log-file-max-size uint     默认值: 1800 定义日志文件的最大尺寸。单位为兆字节。如果值设置为 0,则表示日志文件大小不受限制。
--log-flush-frequency duration     默认值: 5s 两次日志刷新操作之间的最长时间(秒)
--logtostderr     默认值: true 日志输出到 stderr 而不是文件中
--match-server-version 要求客户端版本和服务端版本相匹配
-n, --namespace string 如果存在,CLI 请求将使用此命名空间
--one-output 如果为 true,则只将日志写入初始严重级别(而不是同时写入所有较低的严重级别)。
--password string API 服务器进行基本身份验证的密码
--profile string     默认值: "none" 要记录的性能指标的名称。可取 (none|cpu|heap|goroutine|threadcreate|block|mutex) 其中之一。
--profile-output string     默认值: "profile.pprof" 用于转储所记录的性能信息的文件名
--request-timeout string     默认值: "0" 放弃单个服务器请求之前的等待时间,非零值需要包含相应时间单位(例如:1s、2m、3h)。零值则表示不做超时要求。
-s, --server string Kubernetes API 服务器的地址和端口
--skip-headers 设置为 true 则表示跳过在日志消息中出现 header 前缀信息
--skip-log-headers 设置为 true 则表示在打开日志文件时跳过 header 信息
--stderrthreshold severity     默认值: 2 等于或高于此阈值的日志将输出到标准错误输出(stderr)
--token string 用于对 API 服务器进行身份认证的持有者令牌
--user string 指定使用 kubeconfig 配置文件中的用户名
--username string 用于 API 服务器的基本身份验证的用户名
-v, --v Level 指定输出日志的日志详细级别
--version version[=true] 打印 kubectl 版本信息并退出
--vmodule moduleSpec 以逗号分隔的 pattern=N 设置列表,用于过滤文件的日志记录

7、环境变量

KUBECONFIG kubectl 的配置 ("kubeconfig") 文件的路径。默认值: "$HOME/.kube/config"
KUBECTL_COMMAND_HEADERS 设置为 false 时,将关闭额外的 HTTP 标头,不再详细说明被调用的 kubectl 命令(此变量适用于 Kubernetes v1.22 或更高版本)
KUBECTL_EXPLAIN_OPENAPIV3 切换对 `kubectl explain` 的调用是否使用可用的新 OpenAPIv3 数据源。OpenAPIV3 自 Kubernetes 1.24 起默认被启用。
posted @   半条咸鱼  阅读(54)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示