专栏名称: 顶层架构领域
专注核心架构领域知识、经典干货总结、技术领域趋势跟踪,以通俗易懂的方式传播——复杂的事简单化
目录
相关文章推荐
51好读  ›  专栏  ›  顶层架构领域

超全生产级别应用在Kubernetes上全流程完整部署实战

顶层架构领域  · 公众号  ·  · 2024-06-04 23:07

正文

点击上方 蓝色 顶层架构领域 ”,关注精彩与你分享

在云原生时代,Kubernetes已成为容器编排和管理的行业标准。本文将带您深入了解如何在Kubernetes上部署一个生产级别的应用 到Kubernetes集群,包括但不限于Pod、Service、Deployment、ConfigMap、Secrets、Ingress(或LoadBalancer)、以及可能的HorizontalPodAutoscaler等。 全面掌握Kubernetes的应用部署。

温馨提示:注意看用例上的注释哦,这里就不对每项配置在进行一一说明了。

开始准备出发,下面是一次生产级别的示例配置:

一、 ConfigMap 示例配置

ConfigMap 用于存储配置信息,可以被Pod中的容器挂载为文件或环境变量。在生产环境中,我们通常将应用配置存储在ConfigMap中,以实现配置与代码的分离。

二、Secrets 示例配置

Secrets用于存储敏感信息,如密码、OAuth令牌和SSH密钥。它们可以被Pod中的容器以环境变量或挂载卷的方式使用,以便Pod内的应用程序安全地访问这些敏感信息,而无需将它们硬编码在配置文件或源代码中。
主要的Secret类型:
  1. Opaque (默认类型): 这是最常见的类型,用于存储未分类的敏感数据,如密码、API密钥等。数据以Base64编码的字符串形式存储在etcd中,但请注意,默认情况下这些数据在etcd中是未加密的。可以手动配置etcd以支持静态加密。
  2. kubernetes.io/tls: 用于存储TLS证书和私钥。这类Secret会自动验证提供的数据格式,确保它包含正确的证书和私钥。
  3. kubernetes.io/dockerconfigjson: 专用于存储Docker注册表的认证信息,如 .dockerconfig.json 文件的内容。这允许Pods从私有Docker注册表拉取镜像。
  4. bootstrap.token: 在Kubernetes引导过程中使用,用于生成和分发Bootstrap Tokens,帮助API服务器和其他组件的初始认证。
  5. service-account-token: 与Service Account相关联,用于API访问。这些Secret自动创建,并包含用于访问API的Token。
  6. Opaque类型虽然在API层面被称为默认类型,但实际配置文件中通常写作type: Opaque。

三、PersistentVolume(PV)持久卷示例配置

用来描述由管理员预先准备好的存储资源,旨在为一个高可用、高性能的应用场景提供持久化存储。本示例假设使用NFS作为后端存储,但根据实际情况,你可以根据所使用的存储系统进行相应的调整。

四、PersistentVolumeClaim 请求持久卷声明示例配置

PersistentVolumeClaim允许用户对存储的请求存储资源,这些资源由集群管理员预先配置的PersistentVolume提供
accessModes: ReadWriteOnce 定义了如何挂载此卷。这意味着该卷可以被单个节点以读写方式挂载。其他可选模式还包括 ReadOnlyMany (多个节点只读访问)和 ReadWriteMany (多个节点读写访问),但具体可用性取决于所使用的存储类和后端存储的支持情况。

五、Deployment 定义应用 部署示例配置

Deployment管理Pod的声明式更新,确保应用的平滑发布和高可用性。

通过配置Deployment,我们可以控制应用的副本数量、更新策略以及资源请求和限制。

命名空间和标签: 使用 production 命名空间和 environment: production 标签明确指出这是生产环境的资源。
滚动更新策略: 通过 maxSurge maxUnavailable 参数平衡更新速度与可用性。
资源请求与限制: 精确配置,避免资源滥用或不足,同时通过 requests limits 确保稳定运行。
启动、存活与就绪探针: 增强健康检查逻辑,确保应用在对外服务前完全准备就绪。
环境变量注入: 通过 envFrom 动态从ConfigMap和Secrets加载环境变量,便于管理和更新配置。
卷挂载与更新: 使用Volume Projection技术,当ConfigMap或Secrets更新时,应用配置自动同步。
安全上下文: 加强容器运行时的安全性,限制权限,使用非root用户运行,配置seccomp进一步限制系统调用。
优雅关闭: 设置 terminationGracePeriodSeconds 为60秒,给予应用足够时间处理终止前的清理工作。






请到「今天看啥」查看全文