AIOps 一场颠覆传统运维的盛筵
686
2022-10-29
K8S(四) | 使用Kubernetes对象
了解Kubernetes对象
Kubernetes Objects是Kubernetes系统中的持久实体。Kubernetes使用这些实体来表示集群的状态。具体来说,他们可以描述:
正在运行的容器化应用程序(以及在哪些节点上)这些应用程序可用的资源有关这些应用程序行为方式的策略,例如重新启动策略,升级和容错
Kubernetes对象是一个“意图记录” - 你创建对象,Kubernetes系统将不断努力确保对象存在。通过创建一个对象,您可以有效地告诉Kubernetes系统您希望群集的工作负载看起来像什么; 这是您的群集所需的状态。
要使用Kubernetes对象 - 无论是创建,修改还是删除它们 - 您需要使用Kubernetes API。kubectl例如,当您使用命令行界面时,CLI会为您进行必要的Kubernetes API调用。您还可以使用其中一个客户端库在您自己的程序中直接使用Kubernetes API 。
对象规格和状态
每个Kubernetes对象都包含两个嵌套对象字段,用于控制对象的配置:对象规范和对象状态。您必须提供的规范描述了对象所需的状态 - 您希望对象具有的特征。的状态描述了实际状态的对象,并且通过Kubernetes系统提供和更新。在任何给定时间,Kubernetes控制平面都会主动管理对象的实际状态,以匹配您提供的所需状态。
例如,Kubernetes Deployment是一个对象,可以表示在您的群集上运行的应用程序。创建部署时,您可以设置部署规范以指定您希望运行应用程序的三个副本。Kubernetes系统读取部署规范并启动所需应用程序的三个实例 - 更新状态以符合您的规范。如果这些实例中的任何一个失败(状态改变),Kubernetes系统通过进行更正来响应规范和状态之间的差异 - 在这种情况下,启动替换实例。
有关对象规范,状态和元数据的更多信息,请参阅Kubernetes API约定。
描述Kubernetes对象
在Kubernetes中创建对象时,必须提供描述其所需状态的对象规范,以及有关该对象的一些基本信息(例如名称)。当您使用Kubernetes API创建对象(直接或通过kubectl)时,该API请求必须在请求正文中将该信息包含为JSON。通常,您kubectl在.yaml文件中提供信息。 kubectl在发出API请求时将信息转换为JSON。
这是一个示例.yaml文件,显示Kubernetes部署所需的字段和对象规范:
application/deployment.yaml apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2kind: Deploymentmetadata: name: nginx-deploymentspec: selector: matchLabels: app: nginx replicas: 2 # tells deployment to run 2 pods matching the template template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80
使用上述.yaml文件创建部署的一种方法是kubectl create在kubectl命令行界面中使用该 命令,并将该.yaml文件作为参数传递。这是一个例子:
kubectl create -f https://k8s.io/examples/application/deployment.yaml --record
输出类似于:
deployment.apps/nginx-deployment created
必填字段
在.yaml要创建的Kubernetes对象的文件中,您需要为以下字段设置值:
apiVersion - 您正在使用哪个版本的Kubernetes API来创建此对象kind - 您想要创建什么样的对象metadata- 有助于唯一标识对象的数据,包括name字符串,UID和可选项namespace
您还需要提供对象spec字段。spec对于每个Kubernetes对象,对象的精确格式是不同的,并且包含特定于该对象的嵌套字段。该Kubernetes API参考可以帮助你找到所有你可以创建使用Kubernetes对象的规范格式。例如,spec对于一种格式Pod对象可以发现 这里,和spec用于格式Deployment对象可以找到 这里。
关注我,每天学习Kubernetes
发表评论
暂时没有评论,来抢沙发吧~