Kubernetes 生产部署实录 - 基于 sealos 部署 laf.js
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubernetes 生产部署实录 - 基于 sealos 部署 laf.js相关的知识,希望对你有一定的参考价值。
参考技术A lafyun.com 是基于 开源云开发平台 laf.js 部署的公开运营版云开发平台。lafyun.com 内测阶段是基于 docker-compose 部署的单机版,现在平台正式开放公测,需要基于 kubernetes 部署集群版。
Kubernetes 的部署采用 sealos 一键部署。
系统选择了 centos 7.9,最初经反复测试过 Aliyun Linux 3.x,Kubernetes 表现极不稳定,系统经常会因为 OOM 宕机或断连等问题,特别是单次启动 pod 数量过百之后,后选择了 centos 7.9 表现极其稳定。
kubernetes 选择了 v1.23.2,此版本默认已不支持 docker ,故容器运行时使用了 containerd。
把下面节点的IP换成服务器的内网IP即可,确保 master & node 的 ip 互相可连通后:
查看节点运行状态,在 master 节点运行:
可选择让 master 成为工作节点:
直接参考 laf.js 仓库下 /deploy/kubernetes 目录中的配置启动即可。
一、增加 kubernetes 默认单个节点最大运行 110 个 Pod 的限制,在每个节点做以下操作:
- 编辑 /var/lib/kubelet/config.yml ,修改 maxPods 字段即可;
- 执行 systemctl restart kubelet 使之生效;
二、解除 api-server 默认的 qps 限制,否则当 Pod 数量超过200时,api-server 可能会卡死或超时响应,导致集群不可用:
- 编辑 /var/lib/kubelet/config.yml ,修改 kubeAPIQPS 字段为 50 或 更大的数字;
- 修改 kubeAPIBurst 字段为 100 或 更大的数字;
- 执行 systemctl restart kubelet 使之生效;
三、阿里云 ECS DNS 服务地址与默认 Pod 网段冲突,导致 Pod 无法访问外网的问题:
因为 Sealos 默认 Pod 网段 为 100.164.x.x/20,与阿里云 默认 DNS 服务地址100.x.x.x 冲突,故无法访问外网域名,需要修改 Pod 网段。
所以,在上面执行 sealos init 时我们已经加上了 --podcidr 10.160.0.0/12 选项,配置 Pod 网段为 10.160.0.0/12 ,已解决此问题。
如果要修改 Pod 网段,请避免使用 172.16.0.0/12 网段,会与阿里云 ECS 内网网段冲突。
只需几分钟,即可部署安全的多租户Kubernetes !
Pivotal Container Service (PKS)现已正式发布。PKS旨在简化企业基于任何云部署、运行和管理Kubernetes的过程。PKS可作为Pivotal Cloud Foundry的一部分提供,也可作为单行版产品。
容器如风暴般席卷了IT领域。然后,Kubernetes容器运行和编排方式迅速风靡。
现在,各个企业都希望在生产环境中运行容器。很多高管都在问:“如何在我的数据中心内部署Kubernetes?我需要哪些其他功能?其安全性如何?”
PKS通过针对企业需求量身定制的功能集回答了这些问题。本文介绍了是什么让PKS成为了适用于生产Kubernetes工作负载的完整解决方案。
使用PKS CLI管理Kubernetes群集
具有持续兼容性的纯开源Kubernetes
PKS包含Kubernetes 1.9.2版。开发人员使用标准Kubernetes命令。没有任何专有扩展会阻碍容器工作流。此外,PKS还与最新的Kubernetes项目稳定版持续兼容。这意味着开发团队始终有权访问新功能。
最重要的是,您可以使用PKS API和命令行界面(CLI)创建、扩展和管理Kubernetes群集。
按需调配。PKS可以在数分钟内为开发人员提供企业就绪型Kubernetes群集。如果贵公司正为自制容器项目问题争执不休,敏捷调配将会是不错的选择。
基本的安全功能
每个人都喜欢容器。但在投入生产前,您需要落实安全和监管机制。而这正是PKS的强项。该产品随附以下控制机制:
针对CVE提供快速修复。当CVE攻击时,Pivotal会发布修补程序并主动通知客户。之后,平台工程师便可在不停机的情况下快速将更新应用到Kubernetes群集。(使用构建流水线或随附的Operations Manager工具。)更新系统只需数小时,而非数天!
与NSX-T集成。PKS包含NSX-T网络虚拟化,能以编程方式管理和保护基于软件的虚拟网络。NSX-T支持安全的多租户群集,以及动态负载均衡、网络微分段和策略管理。这意味着信息安全团队可根据需要轻松应用和强制实施企业网络策略,并对群集分段。
企业级容器注册。PKS随附VMware Harbor,后者是一种可存储和分发Docker镜像的注册服务器。大型企业钟爱Harbor,因为它具有漏洞扫描和身份管理功能,可提高容器镜像的安全性。
CredHub。此服务可管理Cloud Foundry生态系统(包括PKS)的凭证生成、存储和访问。此外,CredHub还可以实施全面的访问和状态更改日志记录,从而提高安全性和审核合规性。
多租户。这始终是一个棘手的问题。如果没有多租户,容器及其各自的网络流量将乱作一团。这会增加发生安全违规事件的风险。(在“烦心的邻居”的影响下,性能也会降低。)那么,PKS如何可靠地实施多租户呢?它如何确保容器保持隔离与合规呢?方法有两种:使用单个群集和网络分段;通过多个群集。
首先,我们介绍单个群集这一方法。PKS使用NSX-T通过网络分段和高级策略保护不同的Kubernetes命名空间。每个租户均可自动获取自己的命名空间、隔离子网和逻辑交换机。这样,租户的流量便可与其邻居的完全隔离。在您应用网络策略后,NSX-T会针对容器和底层虚拟机强制实施它。结果:全面的安全模型。
其次,PKS还允许直接通过PKS CLI或API创建多个Kubernetes群集。这种方法可在租户间实现最大程度的隔离。每个租户均会收到完全独立的群集。另一优势:您可以使用同一组工具(PKS CLI和API)管理Kubernetes群集。
全自动运维
自动化是提高运维效率和开发人员工作效率的关键。为此,您可以借助PKS在系统中轻松部署、扩展、修补和升级Kubernetes群集,而无需停机(多亏了BOSH!)。
多层高可用性(HA)
PKS可通过以下三层高可用性确保容器始终在线并正常运行:
容器层。PKS可根据需要依赖其Kubernetes核心重新调度出现故障的单元及关联容器。
进程层。PKS可监控所有Kubernetes进程,包括主节点中运行的进程。它会自动重启所有出现故障的进程。
虚拟机层。当然,PKS可以在虚拟机上运行。它还可跟踪虚拟机的健康状况。它会自动恢复所有出现故障的虚拟机。
接下来,我们详细了解一下该产品。
PKS包含的内容
Kubernetes 1.9.2。PKS始终包含最新的Kubernetes稳定版。Kubernetes 1.10将于三月发布,我们将在新版本发布后很快为其提供支持。另一优势:Kubernetes工具和附加功能集可与PKS配合使用。
服务控制平面 - PKS API和CLI。运维人员安装PKS后,开发人员可以使用PKS CLI(和API)执行以下操作:
create-cluster:创建Kubernetes群集、请求群集名称和外部主机名
delete-cluster:删除Kubernetes群集、请求群集名称
get-credentials:允许您连接到群集并使用Kubectl
help:提供有关任何命令的帮助
clusters:显示使用PKS创建的所有群集
plans:查看可用的预配置计划
resize:增加群集的工作节点数量
cluster:查看群集的详细信息
login:登录PKS
logout:使用户从PKS API注销
容器注册。VMware Harbor是一种用于存储和分发容器镜像的企业级注册服务器。借助Harbor,您可以存储和管理镜像,以与Pivotal Container Service (PKS)配合使用。Harbor可为Docker镜像提供漏洞扫描和身份管理功能,并支持多个注册表。与PKS环境同时部署注册表还可提高镜像传输效率。
NSX-T。Kubernetes扁平网络本身不足以支撑生产部署。因此,我们与VMware合作,添加了软件定义的现代网络和动态负载均衡。管理员可以即时创建网络、配置网络微分段、定义网络策略并隔离不同的租户等。NSX-T还有助于使用动态负载均衡显示部署。
三台虚拟机即可完成基础安装。PKS的空间占用非常小。(这也是它能够快速设置的原因之一。)一台虚拟机用于Pivotal Ops Manager;另一台虚拟机用作PKS控制平面,第三台虚拟机用作BOSH Director。部署好这些虚拟机后,您便可以使用PKS控制平面通过BOSH按需调配Kubernetes群集。群集将拥有熟悉的etcd、master和worker组件。用户可以在调配时选择每个群集的规模。Harbor和NSX-T各需要一台额外的虚拟机。
群集生命周期:使用PKS
企业团队如何使用PKS测试和运行Elasticsearch。步骤如下:
平台运维人员Claire执行了PKS的初始安装。(PKS在NSX-T上部署,以简化网络配置)。
工程师Reggie在PKS中调配了一个新的Kubernetes群集,用于测试场景。他调整了群集的规模以满足测试要求。
然后,Reggie将Elasticsearch容器镜像从Harbor(容器注册表)推送到新Kubernetes群集。此外,他还部署了标准Kubernetes网络策略和负载均衡器,从而使容器可供外部访问。NSX-T发现了Kubernetes中部署的对象,并继续以动态方式部署必要的网络元素。
另一位工程师Kim部署了产品目录微服务,将其与现有Elasticsearch容器绑定。她加载了测试数据并运行了集成测试。
Reggie观察到负载在增加,然后根据增加的负载扩展了Elasticsearch群集。
Claire将针对最新CVE的补丁程序版本应用到Kubernetes群集,同时未对正在运行的工作负载造成任何停机。
Claire在PKS中调配了一个规模更大的新Kubernetes群集,用于生产。
Reggie和Kim将现有工作负载迁移到新生产群集中。他们可以直接将kubectl指向新的群集端点。
Claire缩减了测试群集。
工程师可以专注于完成工作,而无需操心与Kubernetes相关的一切繁琐事项;PKS将为您执行一切操作。
PKS是企业就绪型Kubernetes
评估企业的软件产品组合时,您需要应用平台、容器和函数。当然,您还需要大量Kubernetes群集组合。现在,您要做的是为团队提供一个稳定、安全的Kubernetes正常运行条件,也就是Pivotal Container Service。使用它,您可以构建任何内容。
点击下方“阅读原文”, 查看英文博客
以上是关于Kubernetes 生产部署实录 - 基于 sealos 部署 laf.js的主要内容,如果未能解决你的问题,请参考以下文章
Kubernetes 生产环境安装部署 基于 Kubernetes v1.14.0 之 部署规划
基于 Kubernetes v1.14.0 之 vpa 部署