Kubernetes(K8S) — 生产环境

生产环境

生产质量的 Kubernetes 集群需要规划和准备。 如果你的 Kubernetes 集群是用来运行关键负载的,该集群必须被配置为弹性的(Resilient)。

生产环境考量

需要考虑的因数

  • 可用性:一个单机的 Kubernetes 学习环境 具有单点失效特点。创建高可用的集群则意味着需要考虑:
  1. 将控制面与工作节点分开
  2. 在多个节点上提供控制面组件的副本
  3. 为针对集群的 API 服务器 的流量提供负载均衡
  4. 随着负载的合理需要,提供足够的可用的(或者能够迅速变为可用的)工作节点
  • 规模:如果你预期你的生产用 Kubernetes 环境要承受固定量的请求, 你可能可以针对所需要的容量来一次性完成安装。 不过,如果你预期服务请求会随着时间增长,或者因为类似季节或者特殊事件的原因而发生剧烈变化, 你就需要规划如何处理请求上升时对控制面和工作节点的压力,或者如何缩减集群规模以减少未使用资源的消耗。

  • 安全性与访问管理:在你自己的学习环境 Kubernetes 集群上,你拥有完全的管理员特权。 但是针对运行着重要工作负载的共享集群,用户账户不止一两个时, 就需要更细粒度的方案来确定谁或者哪些主体可以访问集群资源。 你可以使用基于角色的访问控制(RBAC) 和其他安全机制来确保用户和负载能够访问到所需要的资源, 同时确保工作负载及集群自身仍然是安全的。 你可以通过管理策略和 容器资源 来针对用户和工作负载所可访问的资源设置约束。

在自行构建 Kubernetes 生产环境之前, 请考虑将这一任务的部分或者全部交给云方案承包服务提供商或者其他 Kubernetes 合作伙伴。选项有:

  • 无服务:仅是在第三方设备上运行负载,完全不必管理集群本身。 你需要为 CPU 用量、内存和磁盘请求等付费。
  • 托管控制面:让供应商决定集群控制面的规模和可用性,并负责打补丁和升级等操作。
  • 托管工作节点:配置一个节点池来满足你的需要,由供应商来确保节点始终可用,并在需要的时候完成升级。
  • 集成:有一些供应商能够将 Kubernetes 与一些你可能需要的其他服务集成, 这类服务包括存储、容器镜像仓库、身份认证方法以及开发工具等。

无论你是自行构造一个生产用 Kubernetes 集群还是与合作伙伴一起协作, 请审阅下面章节以评估你的需求,因为这关系到你的集群的控制面、工作节点、用户访问以及负载资源。

生产用集群安装

在生产质量的 Kubernetes 集群中,控制面用不同的方式来管理集群和可以分布到多个计算机上的服务。 每个工作节点则代表的是一个可配置来运行 Kubernetes Pod 的实体。

生产用控制面

  • 选择部署工具:你可以使用类似 kubeadm、kops 和 kubespray 这类工具来部署控制面。
  • 管理证书:控制面服务之间的安全通信是通过证书来完成的。
  • 为 API 服务器配置负载均衡:配置负载均衡器来将外部的 API 请求散布给运行在不同节点上的 API 服务实例.
  • 分离并备份 etcd 服务:etcd 服务可以运行于其他控制面服务所在的机器上, 也可以运行在不同的机器上以获得更好的安全性和可用性。
  • 创建多控制面系统:为了实现高可用性,控制面不应被限制在一台机器上。
  • 跨多个可用区:如果保持你的集群一直可用这点非常重要,可以考虑创建一个跨多个数据中心的集群; 在云环境中,这些数据中心被视为可用区。
  • 管理演进中的特性:如果你计划长时间保留你的集群,就需要执行一些维护其健康和安全的任务。

生产用工作节点

  • 配置节点:节点可以是物理机或者虚拟机。

  • 验证节点:参阅验证节点配置以了解如何确保节点满足加入到 Kubernetes 集群的需求。

  • 添加节点到集群中:如果你自行管理你的集群,你可以通过安装配置你的机器, 之后或者手动加入集群,或者让它们自动注册到集群的 API 服务器。

  • 扩缩节点:制定一个扩充集群容量的规划,你的集群最终会需要这一能力。

  • 节点自动扩缩容:查阅集群自动扩缩容, 了解可以自动管理节点的工具及其提供的能力。

  • 安装节点健康检查:对于重要的工作负载,你会希望确保节点以及在节点上运行的 Pod 处于健康状态。 通过使用 Node Problem Detector, 你可以确保你的节点是健康的。

生产级用户环境

建立一个生产级别的集群意味着你需要决定如何有选择地允许其他用户访问集群。 具体而言,你需要选择验证尝试访问集群的人的身份标识(身份认证), 并确定他们是否被许可执行他们所请求的操作(鉴权)

  • 认证(Authentication):API 服务器可以使用客户端证书、持有者令牌、 身份认证代理或者 HTTP 基本认证机制来完成身份认证操作。

  • 鉴权(Authorization):当你准备为一般用户执行权限判定时, 你可能会需要在 RBAC 和 ABAC 鉴权机制之间做出选择。

基于角色的访问控制(RBAC): 让你通过为通过身份认证的用户授权特定的许可集合来控制集群访问。

基于属性的访问控制(ABAC): 让你能够基于集群中资源的属性来创建访问控制策略,基于对应的属性来决定允许还是拒绝访问。

作为在你的生产用 Kubernetes 集群中安装身份认证和鉴权机制的负责人,要考虑的事情如下:

  • 设置鉴权模式:当 Kubernetes API 服务器(kube-apiserver)启动时, 所支持的鉴权模式必须使用 --authorization-mode 标志配置。

  • 创建用户证书和角色绑定(RBAC):如果你在使用 RBAC 鉴权,用户可以创建由集群 CA 签名的 CertificateSigningRequest(CSR)。

  • 创建组合属性的策略(ABAC):如果你在使用 ABAC 鉴权, 你可以设置属性组合以构造策略对所选用户或用户组执行鉴权, 判定他们是否可访问特定的资源(例如 Pod)、名字空间或者 apiGroup。

  • 考虑准入控制器:针对指向 API 服务器的请求的其他鉴权形式还包括 Webhook 令牌认证。

为负载资源设置约束

  • 设置名字空间限制:为每个名字空间的内存和 CPU 设置配额

  • 为 DNS 请求做准备:如果你希望工作负载能够完成大规模扩展,你的 DNS 服务也必须能够扩大规模。

  • 创建额外的服务账户:用户账户决定用户可以在集群上执行的操作,服务账号则定义的是在特定名字空间中 Pod 的访问权限。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/833425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker 中快速构建 Redis Cluster 集群

Docker 中快速构建 Redis Cluster 集群 目录 前言环境准备 所需软件配置网络 构建 Redis Cluster 镜像 创建自定义 Dockerfile构建镜像 启动 Redis 节点容器 启动命令 配置 Redis Cluster 集群 创建 Redis 集群验证集群状态 总结 前言 Redis 是一个高性能的键值对数据库&am…

GIS入门,不使用任何第三方库,纯JavaScript实现Catmull-Rom样条曲线(Spline Curve)插值算法,生成更加平滑连续的曲线

前言 本章介绍不使用任何第三方库,纯JavaScript实现样条曲线(Spline Curve)插值算法,生成更加平滑连续的曲线。 样条曲线(Spline Curve)插值算法比贝塞尔曲线生成的曲线更加平滑连续。 介绍 样条曲线(Spline Curve)是一种通过给定的控制点插值生成平滑曲线的方法。其…

什么是SFP光模块?如何选择SFP光模块?

SFP光模块是一种小型化、支持热拔插的光模块,用于光纤通信、数据通信和网络设备之间的传输。本文将从SFP光模块的概述、技术原理、外观组成、如何选择以太网SFP光模块以及SFP光模块的未来趋势等方面进行介绍,帮助读者更好地了解SFP光模块并正确选择适合自…

浏览器渲染

1 React JSX如何渲染? JSX 本身不能被浏览器直接识别和执行,因为它不是标准的 JavaScript 语法。 JSX 是一种语法扩展,它允许开发者在 JavaScript 中以类似HTML的语法编写UI结构。 使用编译器(如Babel):B…

【编码利器 —— BaiduComate】

目录 1. 智能编码助手介绍 2. 场景需求 3. 功能体验 3.1指令功能 3.2插件用法 3.3知识用法 3.4自定义配置 4. 试用感受 5. AI编程应用 6.总结 智能编码助手是当下人工智能技术在编程领域的一项重要应用。Baidu Comate智能编码助手作为一款具有强大功能和智能特性的工…

计算机系列之算法分析与设计

21、算法分析与设计 算法是对特定问题求解步骤的一种描述。它是指令的有限序列,其中每一条指令标识一个或多个操作。 它具有有穷性、确定性(含义确定、输入输出确定,相同输入相同输出;执行路径唯一)、可行性、输入&a…

ps基础学习笔记-颜色模式

ps基础学习笔记-颜色模式 在数字图像处理的世界中,颜色模式是至关重要的。它们定义了图像如何存储、显示和打印颜色。不同的颜色模式各有其特点和适用场景。本文将深入探讨常见的颜色模式:RGB、CMYK、索引模式HSB、Lab、灰度模式和位图模式。通过了解这…

Android 蓝牙实战——蓝牙音乐播放/暂停状态(二十二)

对于蓝牙音乐的播放状态,我们首先主要处理的是 onPlayStatusChanged() 回调,这是协议栈通知 FW 层的一个回调接口。还有一个就是 getPlayBackState() 方法,这是媒体应用在初始化时未收到回调信息主动获取当前状态的方法。我们这里就来分析一下…

链表经典面试题01

目录 引言 面试题01:返回倒数第k个节点 题目描述: 思路分析: 代码展示: 面试题02:链表的回文结构 题目描述: 描述 思路分析: 代码展示: 面试题03:相交链表 题目描述: 思路分析: 代码展示: 小结: 引言 这次的题均来自力扣和牛客有关链表的经典面试题,代码只会展示…

go语言自定义排序接口Interface实现示例 sort.Sort(data Interface) 快速排序 pdqsort

go语言sort.Sort(data Interface) 排序接口自定义排序实现,golang里面的sort包中的Sort方法底层使用的是 pdqsort的一个快速排序算法, 我们可以将要排序的对象实现Interface接口后直接丢个这个函数即可自动按照我们指定的方式进行数据快速排序。 sort函…

C++从入门到精通——类的6个默认成员函数之拷贝构造函数

拷贝构造函数 前言一、拷贝构造函数概念理解定义 二、拷贝构造函数的特征三、注意要点写法实践传址返回与引用返回的区别传址返回引用返回 传值返回和传址返回的对比总结测试 前言 类的6个默认成员函数:如果一个类中什么成员都没有,简称为空类。 空类中…

抢占用户|AI助力企业高效挖掘潜在客户,推动高质量转化

随着人工智能(AI)技术的崛起,企业终于可以在这个数字化时代获得一种强大的工具,帮助企业迅速而准确地找到潜在客户。AI不仅能够处理海量的数据,还能自动分析和识别潜在客户的特征和行为模式,为企业营销提供…

母婴用品网站设计与实现 java母婴用品网站源代码+论文+ppt

母婴用品网站设计与实现:基于JSP与MySQL的实践探索 引言 随着信息化时代的到来,母婴用品网站作为信息获取和商品交易的平台,其开发与设计成为了一个迫切的课题。本文将探讨如何利用JSP技术和MySQL数据库构建一个功能完备、用户友好的母婴用品网站。 系统概述 背景与必要…

【WEEK11】 【DAY1】Employee Management System Part 2【English Version】

2024.5.6 Monday Continuing from 【WEEK10】 【DAY2】Employee Management System Part 1【English Version】 Contents 10.3. Page Internationalization10.3.1. Preparation10.3.2. Configuration File Writing10.3.2.1. Create an i18n (abbreviation for internationaliza…

YOLOv8深度剖析专栏导航

本专栏计划更新关于YOLOv8目标检测、实例分割、关键点检测、旋转目标检测任务的实践和理论知识。实践篇会包括训练自己的数据集、并对模型进行验证、预测和导出;理论篇会介绍各任务的预测流程和训练流程。下面是已更新的文章目录: 1.软件安装及YOLOv8环境…

系统守护者:揭秘限流的四大算法与实战攻略

在网络世界的广阔天地中,服务如同繁忙的港口,每天迎来送往数不尽的请求。然而,潮水般的流量背后隐藏着风险,稍有不慎,系统便会因不堪重负而倾覆。这时,"限流"便如同智慧的灯塔,指引着…

专业的保密网文件导入导出系统,让文件流转行为更可控安全

军工单位因其涉及国防安全和军事机密,对保密工作有极高的要求,通常会采取严格的网络隔离措施来保护敏感信息和提高网络安全性。常见的方式是通过物理隔离将网络彻底分隔开来,比如保密网和非保密网。网络隔离后,仍有数据交换的需求…

Linux命令--tcpdump命令--使用与详解

原文网址:Linux命令--tcpdump命令--使用与详解_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Linux的tcpdump命令的用法。 tcpdump可以输出网络的通信记录,可以用来排查问题、查看被攻击网站的详细情况等。 示例 捕获eth0的数据包 tcpdump -i ens33 捕…

GORM的常见命令

文章目录 一、什么是GORM?二、GORM连接mysql以及AutoMigrate创建表三、查询1、检索此对象是否存在于数据库(First,Take,Last方法)2、Find()方法检索3、根据指定字段查询 四、更新1、Save() 保存多个字段2、更新单个字段 五、删除 一、什么是G…

Python中设计注册登录代码

import hashlib import json import os import sys # user interface 用户是界面 UI """ 用户登录系统 1.注册 2.登陆 0.退出 """ # 读取users.bin def load(path): return json.load(open(path, "rt")) # 保存user.bin def save(dic…