Kubernetes 服务发现之 Ingress 进阶
本文介绍了Ingress的进阶使用示例,包括实现重定向、路由跳转、自定义Nginx配置、CORS支持及限流功能。通过在Ingress对象的注解中设置相应参数,可以灵活地控制HTTP请求的行为。例如,利用`nginx.ingress.kubernetes.io/permanent-redirect`进行URL重定向,使用`nginx.ingress.kubernetes.io/rewrite-target`实现路径重写,以及通过`nginx.ingress.kubernetes.io/enable-cors`启用跨源资源共享等。此外,文章还提供了关于Ingress配置的一些注意事项,如确保路径定义清晰以避免冲突、正确处理HTTPS请求等,强调了理解和遵循这些规则的重要性,以确保高效且安全的服务部署。
Kubernetes 控制器之 ConfigMap
Kubernetes中的ConfigMap是一种用于存储非敏感信息的资源对象,它通过键值对形式向Pod提供配置信息,使得应用配置更加灵活且可移植。ConfigMap支持多种使用方式,包括作为环境变量、命令行参数或挂载为数据卷等,并且可以挂载多个ConfigMap以分离不同方面的配置。ConfigMap是命名空间级别的资源,可通过Kubernetes API进行管理。文章还提供了创建、更新、查看和删除ConfigMap的具体操作示例,如使用文件、env文件、字符串或者YAML格式定义的资源清单来创建ConfigMap。此外,介绍了如何通过修改资源清单或重新创建的方式来更新现有的ConfigMap。
Kubernetes 控制器之 StatefulSet
Kubernetes 中的 StatefulSet 是一种高级 API 对象,用于管理有状态应用的生命周期。它确保指定数量的 Pod 副本始终运行且是最新的,并通过保持 Pod 的有序性、持久性和唯一性来支持有状态应用。StatefulSet 控制器为每个 Pod 分配唯一的序号、提供持久化存储卷并保证其名称唯一,从而实现对数据的持续访问和个性化体验。此外,StatefulSet 支持滚动更新策略,允许逐步更新而不中断服务,并具备自动修复和版本回滚功能。通过无头服务(Headless Service),StatefulSet 还可以实现 Pod 间的直接通信。常用操作包括创建、更新、回滚、查看及删除 StatefulSet,以及调整副本数量。
Kubernetes 控制器之 ConfigMap 与 Secret 异同
ConfigMap和Secret都是Kubernetes中用于存储配置数据的资源,允许Pod通过环境变量或卷挂载访问这些信息。两者都可以使用命令行工具或API创建,并以键值对形式存储数据。当它们的内容更新时,相关的Pod需要手动重启才能获取到最新的配置。此外,ConfigMap与Secret都支持RBAC规则来管理访问权限。
不同之处在于:ConfigMap适用于非敏感数据(如普通配置文件),而Secret则专为敏感数据(如密码、令牌)设计;Secret中的数据默认加密存储于Etcd,提供更高安全性;ConfigMap不区分类型,但Secret有多种类型(例如Opaque);虽然ConfigMap理论上没有大小限制,但推荐不超过1MB,相比之下Secret由于加密原因通常具有更严格的大小约束;最后,在默认情况下,ConfigMap对所有用户开放,而Secret则需更加严格地控制访问权限。
Kubernetes 控制器之 Secret
Kubernetes中的Secret是一种用于存储敏感信息(如密码、密钥)的资源对象,它通过键值对的形式提供经过base64编码的数据给应用程序,增强了配置的灵活性和安全性。与ConfigMap不同,Secret支持多种类型(如Opaque, kubernetes.io/dockerconfigjson等),且自Kubernetes 1.7起,默认在etcd中以加密形式保存数据。Secret是命名空间级别的,并可通过Kubernetes API进行管理。创建Secret有多种方式,包括使用文件、环境变量文件、直接指定字符串或通过YAML文件定义;更新时可以通过修改后重新应用或直接更新YAML文件实现;查看和删除操作也提供了相应的命令行工具支持。
Kubernetes 控制器之 CronJob
CronJob 是 Kubernetes 中用于周期性执行任务的 API 对象,它基于时间调度配置,在指定时间创建并运行 Job。CronJob 适用于定时备份、检查等场景。其工作流程包括定义 CronJob 对象、监控状态、按计划生成 Job、执行任务、监控 Pod 状态、记录历史及清理资源。CronJob 支持复杂的时间表、并发策略、失败重试、暂停与恢复等功能,并允许设置时区和死信队列。通过 `cronjob.yaml` 文件可定义 CronJob,示例中展示了每天 00:10 执行打印数字的任务。常用操作包括创建、查看和删除 CronJob。
Kubernetes 控制器之 DaemonSet
DaemonSet 是 Kubernetes 中的一种控制器,用于确保所有节点或选定节点上都运行一个 Pod 的副本,通常用于部署如日志收集、监控代理等系统服务。其工作原理包括定义对象、调度 Pod、监控状态、更新配置和节点选择。DaemonSet 支持自动恢复、滚动更新,并能通过标签选择器灵活控制 Pod 的分布。此外,它还支持资源请求与限制,与 Kubernetes 其他功能紧密集成,适用于大规模集群。用户可以通过 YAML 文件定义 DaemonSet 并使用 kubectl 命令进行创建、更新、回滚、查看及删除等操作。

