K8S 集群核心概念 Controller_介绍-分类-Deployment 控制器介绍_创建 Deployment 控制器类型应用 | 学习笔记

简介: 快速学习 K8S 集群核心概念 Controller_介绍-分类-Deployment 控制器介绍_创建 Deployment 控制器类型应用

开发者学堂课程【Kubernetes 极速入门:K8S 集群核心概念 Controller_介绍-分类-Deployment 控制器介绍_创建 Deployment 控制器类型应用】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/658/detail/10912


K8S 集群核心概念 Controller_介绍-分类-Deployment 控制器介绍_创建 Deployment 控制器类型应用

 

内容介绍:

一、场景

二、学习目标

三、学习步骤

四、课程内容

 

一、场景

通过前面课程的学习,已经掌握了 Pod 管理操作,过程中发现当删除Pod时是可以直接删除的,如果在生产过程中误操作,Pod 同样也会轻易被删除的,因此,需要在k8s 集群中引入另一种概念 Controller (控制器),用于在 k8s 集群中以 loop 方式监视Pod 状态,如果其发现Pod被删除,将会重新拉起一个 Pod,以让 Pod 一直保持在用户期望状态。

 

二、学习目标

1.了解 Controller 作用

2.了解 Controller 分类

3.了解 Deployment 控制器作用

4.掌握创建 Deployment 控制器类型应用方法

5.掌握删除 Deployment 控制器类型应用方法

 

三、学习步骤

1.Controller 介绍

2.Controller 分类

3.Deployment 控制器介绍

4.创建 Deployment 控制器类型应用

5.删除 Deployment 控制器类型应用

 

四、课程内容

1.Controller 介绍

控制器

●目的:用于对应用运行的资源对象(主要是pod)进行监控

当 Pod 出现问题时,会把Pod重新拉起,以达到用户的期望状态

2.Controller分类

常见 Pod 控制器:

控制器名称

作用

Deployment

声明式更新控制器,用于发布无状态应用

ReplicaSet

副本集控制器,用于对Pod进行副本规模扩大或剪裁

statefulSet

有状态副本集,用于发布有状态应用

DaemonSet

在k8s集群每一个Node上运行一个副本,用于发布监控或日志收集类等应用(如果想要对整个k8s集群所有的节点,例如master节点和work节点进行监控,或者对其进行日志收集,可以使用DaemonSet控制器。)

Job

运行一次性作业任务(例如执行一个同步时间)

CronJob

运行周期性作业任务

3.Deployment 控制器介绍

●具有上线部署、滚动升级、创建副本、回滚到以前某一版本(成功/稳定)等功能。

●Deployment 包含 ReplicaSet,除非需要自定义升级功能或者根本不需要升级Pod,否则还是建议使用 Deployment 而不直接使用 Replica Set 。

4.创建 Deployment 控制器类型应用

方式一:通过 Kubect 命令行创建

命令

[rootemaster1 ~]# kubectl run nginx-app --image=nginx: latest -

-image-pu11-policy=IfNotPresent --replicas=2(通过两个pod运行起来)

输出

dep1oyment.apps/nginx-app created

具体操作:

[ root@master1 yamldir]# kubectl run nginx-app1 --image=nginx:latest --image-pull-

policy=IfNotPresent -- replicas=2

kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/vl or kubectl create instead

deployment.apps/nginx-app1 created

如何查看已经创建的应用

说明

nginx-app 是 deployment 控制器类型的应用名称

nginx : latest 是应用运行的 Pod 中的 Container 所使用的镜像

IfNotPresent 是 container 容器镜像下载策略,如果本地有镜像,使用本地,如果本地没有镜像,下载镜像

--replicas=2是指应用运行的 Pod 共计2个副本,这是用户的期望值,

Deployment 控制器中的 Replicaset 控制器会一直监控此应用运行的 Pod 副本状态,如果数量达不到用户期望,就会重新拉起一个新的 Pod,会让 Pod 数量一直维持在用户期望值数量。

命令

查看 Deployment 控制器类型应用

[rootemaster1 ~]#kubect1 get deployment.apps

命令

查看 Replicaset 控制器类型

[root@master1 ~]#kubectl get replicaset

命令

查 Pod 状态

[root@master1 ~]# kubectl get pods

具体操作:

[ root@master1 yamldir]#kubectl get deployment

NAME              READY      UP -TO-DATE       AVAILABLE       AGE

nginx-app1           2/2            2                2           75s

[ root@master1 yamldir]#kubectl get replicaset

NAME                  DESIRED      CURRENT       READY       AGE

nginx- app1-57c7c9c89d      2             2            2         2m12s

[ roptamaster1 yamldir]#kubectl get pods

NAME                    READY      STATUS    RESTARTS         AGE

nginx-app1-57c7c9c89d-qp8h8   1/1       Running       0           2m50s

nginx-app1-57c7c9c89d-tq868   1/1       Running       0          2m50s

访问 Pod

[ root@master1 yamldir]#kubectl get pods -o wide

NAME            READY       STATUS      RESTARTS      AGE       IP

NODE       NOMINATED NODE        READINESS GATES

nginx-app1-57c7c9c89d-qp8h8  1/1  Running       0       3m31s   172 .16.235.130

worker1  <none>         <none>

nginx-app1-57c7c9c89d-tq868   1/ 1  Running      0       3m31s     172.16 .189.66

worker2   <none>    <none>

[ root@master1 yamldir]# curl http://172.16.189.66

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3天前
|
缓存 Kubernetes Docker
GitLab Runner 全面解析:Kubernetes 环境下的应用
GitLab Runner 是 GitLab CI/CD 的核心组件,负责执行由 `.gitlab-ci.yml` 定义的任务。它支持多种执行方式(如 Shell、Docker、Kubernetes),可在不同环境中运行作业。本文详细介绍了 GitLab Runner 的基本概念、功能特点及使用方法,重点探讨了流水线缓存(以 Python 项目为例)和构建镜像的应用,特别是在 Kubernetes 环境中的配置与优化。通过合理配置缓存和镜像构建,能够显著提升 CI/CD 流水线的效率和可靠性,助力开发团队实现持续集成与交付的目标。
|
1月前
|
人工智能 Kubernetes 安全
赋能加速AI应用交付,F5 BIG-IP Next for Kubernetes方案解读
赋能加速AI应用交付,F5 BIG-IP Next for Kubernetes方案解读
63 13
|
1月前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。
|
2月前
|
Kubernetes 监控 安全
容器化技术:Docker与Kubernetes的实战应用
容器化技术:Docker与Kubernetes的实战应用
|
2月前
|
Java Docker 微服务
利用Docker容器化部署Spring Boot应用
利用Docker容器化部署Spring Boot应用
59 0
|
4天前
|
缓存 容灾 网络协议
ACK One多集群网关:实现高效容灾方案
ACK One多集群网关可以帮助您快速构建同城跨AZ多活容灾系统、混合云同城跨AZ多活容灾系统,以及异地容灾系统。
|
17天前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
14天前
|
Kubernetes Ubuntu 网络安全
ubuntu使用kubeadm搭建k8s集群
通过以上步骤,您可以在 Ubuntu 系统上使用 kubeadm 成功搭建一个 Kubernetes 集群。本文详细介绍了从环境准备、安装 Kubernetes 组件、初始化集群到管理和使用集群的完整过程,希望对您有所帮助。在实际应用中,您可以根据具体需求调整配置,进一步优化集群性能和安全性。
61 12
|
19天前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
37 2
|
2月前
|
Kubernetes 监控 Cloud Native
Kubernetes集群的高可用性与伸缩性实践
Kubernetes集群的高可用性与伸缩性实践
83 1