k8s控制器之Deployment第二弹之创建Deployment

news/2024/12/2 23:40:06/

下面的yaml文件nginx-deployment.yaml 创建了一个deployment,并且该deployment 将创建一个有 3 个 nginx Pod 副本的 ReplicaSet(副本集)。

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentlabels:app: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.7.9ports:- containerPort: 80
  • 将创建一个名为 nginx-deployment 的 Deployment(部署),名称由 .metadata.name 字段指定
  • 该 Deployment 将创建 3 个 Pod 副本,副本数量由 .spec.replicas 字段指定
  • .spec.selector 字段指定了 Deployment 如何找到由它管理的 Pod。此案例中,我们使用了 Pod template 中定义的一个标签(app: nginx)。对于极少数的情况,这个字段也可以定义更加复杂的规则
  • .template字段包含了如下字段:
    • .template.metadata.labels 字段,指定了 Pod 的标签(app: nginx)
    • .template.spec.containers[].image 字段,表明该 Pod 运行一个容器 nginx:1.7.9
    • .template.spec.containers[].name 字段,表明该容器的名字是 nginx

创建该Deployment

1、执行命令创建Deployment

kubectl apply -f nginx-deployment.yaml

可以为该命令增加–record 选项,此时 kubectl 会将 kubectl apply -f nginx-deployment.yaml --record 写入 Deployment 的 annotation(注解) kubernetes.io/change-cause 中。这样,您在将来就可以回顾某一个 Deployment 版本变化的原因。

2、执行命令 kubectl get deployments 检查 Deployment 的创建情况

如果我们立即查看

kubectl get deployment

输出结果:

NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   0/3     3            0           10s

字段含义:

字段名称说明
NAMEDeployment 名字
DESIREDDeployment 期望的 Pod 副本数,即 Deployment 中 .spec.replicas 字段指定的数值。该数值是“期望”值
CURRENT当前有多少个 Pod 副本数在运行
UP-TO-DATEDeployment 中,符合当前 Pod Template 定义的 Pod 数量
AVAILABLE当前对用户可用的 Pod 副本数
AGEDeployment 部署以来到现在的时长

可以看到Deployment 还在创建中

3、查看 Deployment 的发布状态(rollout status)

执行命令 kubectl rollout status deployment.v1.apps/nginx-deployment

kubectl rollout status deployment.v1.apps/nginx-deployment

输出结果:

Waiting for rollout to finish: 2 out of 3 new replicas have been updated...
deployment.apps/nginx-deployment successfully rolled out

4、等待一段时间再查看

kubectl get deployments

输出结果:

NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   3/3     3            3           8m37s

此时该 Deployment 已经完成了 3 个 Pod 副本的创建,并且所有的副本都是 UP-TO-DATE 和 AVAILABEL

5、查看该 Deployment 创建的 ReplicaSet(rs)

 kubectl get rs 

输出结果

NAME                          DESIRED   CURRENT   READY   AGE
nginx-deployment-84df99548d   3         3         3       10m

6、查看pod标签

kubectl get pods --show-labels

输出结果:

NAME                                READY   STATUS    RESTARTS   AGE   LABELS
nginx-deployment-84df99548d-dhpq6   1/1     Running   0          12m   app=nginx,pod-template-hash=84df99548d
nginx-deployment-84df99548d-wrhkc   1/1     Running   0          12m   app=nginx,pod-template-hash=84df99548d
nginx-deployment-84df99548d-xmff9   1/1     Running   0          12m   app=nginx,pod-template-hash=84df99548d

Deployment 创建的 ReplicaSet(副本集)确保集群中有 3 个 nginx Pod。

您必须为 Deployment 中的 .spec.selector.template.metadata.labels 定义一个合适的标签(这个例子中的标签是 app: nginx)。请不要使用与任何其他控制器(其他 Deployment / StatefulSet 等)相同的 .spec.selector.template.metadata.labels。否则可能发生冲突,并产生不可预见的行为。

Pod-template-hash 标签

pod-template-hash 标签是 Deployment 创建 ReplicaSet 时添加到 ReplicaSet 上的,ReplicaSet 进而将此标签添加到 Pod 上。这个标签用于区分 Deployment 中哪个 ReplicaSet 创建了哪些 Pod。该标签的值是 .spec.template 的 hash 值。

不要修改这个标签


http://www.ppmy.cn/news/87016.html

相关文章

Day0:Windows编程环境搭建

前言:学习一个东西,首先要有三问: 1. 这个东西是什么? 2. 为什么要学它? 3. 该怎么学习它? 第一问是要明白你要学习的东西它是什么,你就会对它有一个整体的了解。这也是第二问的半个答案&#x…

微服务框架TraceId方案

微服务框架TraceId方案 一、背景与目的二、MDC机制三、dubbo框架下TraceId方案3.1 一次用户请求链路跟踪3.1.1 web层3.1.2 RPC调用层 3.2 线程池3.3 其他 一、背景与目的 在项目中随着项目的业务越来越复杂,以及项目的微服务化等,导致平常的项目中出现如…

快速上手kettle(一)壶之简介

Linux核心命令系列文章目录 快速上手kettle(一):壶之简介 快速上手kettle(二):Kettle初体验(博主正在玩命更新中) 快速上手kettle(三):Kettle转换…

Hexo博客查图片并调整位置大小

Hexo博客查图片并调整位置&大小 🌈Description: ​ Markdown写文章插入图片,在hexo博客中,图片的大小似乎没有按照个markdown的语法生效,本文将解决此问题。 现有问题描述 obsidian中插入图片的语法: !…

电子数据保全及数据恢复

目录 一.创建虚拟磁盘 系统操作 1.创建虚拟磁盘文件 2.完成低级格式化——分区——高级格式化 3.虚拟磁盘创建完成 用winhex做 2. 镜像: 克隆: 计算分区的hash值: 二.FAT32文件系统 1.认识FAT32文件系统 三.NTFS文件系统 认识NTFS文…

马哈鱼SQLFLow直接数据流介绍

直接数据流介绍 本文将介绍一些生成直接数据流的SQL元素,这些元素是生产数据流的主要原型。 1、Select 示例语句: SELECT a.empName "eName" FROM scott.emp a Where sal > 1000目标列“eName”的数据来自scott.emp.empName列&#xff…

小程序设计与用户体验(中)

设计小程序的用户交互、动画和视觉效果 小程序的成功与否直接关系到用户体验,而用户交互、动画和视觉效果是影响用户体验的关键因素之一。因此,设计师应该注重小程序的用户交互设计、动画设计和视觉设计,以下是详细的介绍: 一、…

软件系统的质量属性

软件系统的质量属性分为外部质量属性和内部质量属性 外部质量属性因素影响用户内部质量因素影响软件本身和它的开发者外部质量取决于内部质量 外部质量属性: 正确性(correctness)健壮性(robustness)可扩展性&#x…