Kubernetes 是一个开源容器管理系统,用于自动化容器化应用程序的部署、管理和扩展。它提供了高级功能,例如自动服务发现、负载均衡和自动缩放,使其成为大规模部署和管理容器化应用程序的理想选择。
Kubernetes 可以部署在各种云供应商上,包括亚马逊网络服务 (AWS)、微软 Azure 和 Google 云平台 (GCP)。每个云供应商都提供了一套特定的工具和服务,以简化 Kubernetes 部署和管理。
亚马逊网络服务 (AWS) 提供了名为 Amazon Elastic Kubernetes Service (EKS) 的托管 Kubernetes 服务。EKS 简化了 Kubernetes 的部署和管理,并提供与其他 AWS 服务的无缝集成。
部署 Kubernetes 到 AWS 的步骤如下:
1. 创建一个 AWS 账户。 2. 创建一个 EKS集群。 3. 配置 Kubernetes 命令行工具 (kubectl)。 4. 部署应用程序到 Kubernetes 集群。有关详细的说明,请参阅 AWS 文档 。微软 Azure 提供了一个名为 Azure Kubernetes Service (AKS) 的托管 Kubernetes 服务。AKS 允许您轻松部署和管理 Kubernetes 集群,并与其他 Azure 服务集成。
部署 Kubernetes 到 Azure 的步骤如下:
1. 创建一个 Azure 账户。 2. 创建一个 AKS 集群。 3. 配置 Kubernetes 命令行工具 (kubectl)。 4. 部署应用程序到 Kubernetes 集群。有关详细的说明,请参阅 Azure 文档 。Google 云平台 (GCP) 提供了一个名为 Google Kubernetes Engine (GKE) 的托管 Kubernetes 服务。GKE 提供了与其他 GCP 服务的紧密集成,并简化了 Kubernetes 集群的部署和管理。
部署 Kubernetes 到 GCP 的步骤如下:
1. 创建一个 GCP 账户。 2. 创建一个 GKE 集群。 3. 配置 Kubernetes 命令行工具 (kubectl)。 4. 部署应用程序到 Kubernetes 集群。有关详细的说明,请参阅 GCP 文档 。Kubernetes 提供了强大的功能,用于部署、管理和扩展容器化应用程序。使用云供应商提供的托管 Kubernetes 服务,可以在 AWS、Azure 和 GCP 等主要云平台上轻松部署 Kubernetes。
通过利用云供应商提供的工具和服务,您可以简化 Kubernetes 的部署和管理,并充分利用云平台提供的功能。
本文旨在比较六个常见的容器管道服务:Heroku、Azure DevOps、Beanstalk、Gitlab CI/CD、JenkinsX以及Google Cloud Build,以帮助团队选择最适合的部署和管理容器的工具。 Heroku以简洁著称,基于Docker的容器管道,易于使用,仅需YAML文件配置。 它提供完全托管环境,支持快速部署,但Docker功能有限,如测试组件的运行和阶段升级需通过重新部署实现。 Heroku的免费计划适合轻量级团队。 Azure DevOps作为Microsoft的全栈DevOps解决方案,适合已经使用Azure的团队,功能全面,但集成其他服务可能复杂,适合寻求一体化解决方案的团队。 GitLab CI/CD则是一个灵活且功能丰富的开源选项,支持自定义配置和自动化,但需要维护部署环境,对自托管有要求。 Elastic Beanstalk为AWS用户提供了一个强大的工具,可以自动管理资源,但其复杂性可能不适合简单容器管道需求,适合在AWS内需要深度定制的团队。 Google Cloud Build是基于GCP的快速构建服务,与其他GCP服务集成良好,适合已使用GCP的团队,但部署目标有限。 Jenkins X扩展了Jenkins的功能,特别适合Kubernetes用户,但对集群配置有一定要求。 总的来说,选择取决于团队的技术栈、现有的工具链和对自动化、集成和成本的需求。 每个工具都有其独特的优势和适用场景,建议根据具体需求进行试用和评估。
容器化是开发和部署应用的热门趋势,因为它们是加速开发的有效方式。 容器的使用量在过去几年呈指数增长。
但是,跨基础架构管理容器可能会变得十分复杂,所以容器管理平台对于任何企业来说都是必不可少的工具。 Kubernetes和OpenShift是市场上最受欢迎的两个容器管理平台。 而OpenShift是基于Kubernetes的,那么二者之间到底有哪些区别呢?
OpenShift是由红帽(Red Hat)开发的容器化软件解决方案。 他们的主要产品是OpenShift容器平台,这是基于Kubernetes管理的平台即服务(PaaS)。 它是用Go和AngularJS编写的,并且有Apache许可证。
OpenShift Origin是红帽基于开源的云平台,允许开发人员构建,测试和部署云应用。 该系统在Kubernetes核心之上添加工具,以实现更快的应用开发,轻松部署和扩展。
该平台除了可扩展外,还支持Go,,Ruby,Python,PHP,Perl和Java,允许用户添加对其他语言的支持。 关于可扩展性,该平台可以自动或手动扩展容器化应用。
OpenShift提供的一些功能包括:
在整个应用程序生命周期中的安全性 - 安全性检查内置于容器堆栈中。
平台上包含的内置监控功能是Prometheus,一种数据库和应用监控软件。 你可以在Grafana仪表板上实时显示应用。
集中式策略管理 - 跨集群的单个控制台为用户提供了实施策略的集中位置。
兼容性-OpenShift是Certified Kubernetes计划的一部分,因此允许与Kubernetes容器工作负载兼容。
使用OpenShift的好处包括:
快速的应用开发 - 平台流传输和自动化容器管理过程,从而增强了DevOps过程。 应用开发的这种加速意味着你可以更快地进入市场,从而提高竞争力。
没有供应商锁定提供与供应商无关的开源平台,这意味着用户可以根据需要将其容器流程迁移到新的操作系统,而无需重新进行容器化编排。
自助服务配置 - OpenShift允许用户集成他们最常使用的工具,例如,视频 游戏 开发人员在开发与多个操作系统兼容的 游戏 时可以使用此功能。
Kubernetes是一个开源容器即服务(CaaS)编排系统,用于自动化容器化应用的部署,扩展和管理,从而改进应用程序开发过程。Kubernetes的一些功能包括:
Kubernetes的好处包括:
由于OpenShift基于Kubernetes,因此它们有很多共同之处。 但是,两个平台之间存在一些差异。 让我们对OpenShift和Kubernetes功能进行比较:
基础
虽然两者都基于Linux,但每个产品都在不同的环境中运行:
Kubernetes在其可运行的操作系统方面更加灵活。 但是,包管理器应该是RPM,这意味着选择合适的Linux发行版。 因此最好在Fedora,Ubuntu或Debian上运行它。 Kubernetes可以部署在任何主要的IaaS平台上,例如AWS,Azure,GCP、阿里云、IBM云平台等。
OpenShift可以安装在Red Hat Enterprise Linux(RHEL)和Red Hat Enterprise Linux Atomic Host(RHELAH)以及Fedora和CentOS上。 OpenShift Dedicated允许在云中创建自己的集群,特别是基于AWS。
这两种产品在Rollout方面都很复杂:
Kubernetes运行平台的多样性意味着有无数的解决方案可以在本地创建Kubernetes集群。 大多数都基于Rancher Kubernetes Everywhere(RKE)或kops等安装程序。
OpenShift可避免在首次Rollout后需要额外的组件。 因此,它配备了基于Ansible的专有安装程序,可以使用最少的配置参数安装OpenShift。
与通过基于Web的用户界面管理集群的能力相比,OpenShift和Kubernetes之间存在很大差异。
Kubernetes的仪表板必须单独安装,需要通过kube代理访问,以将本地机器的端口转发到集群的管理服务器。 此外,它没有登录页面,但你需要手动创建承载令牌以提供身份验证和授权。 所有这些复杂性导致Web UI对于真正的日常管理工作而言不是很有价值。
OpenShift的Web控制台有一个登录页面,可以轻松访问,甚至可以让你通过表单创建和更改大多数资源。 虽然你无法通过Web管理集群,但可以可视化服务器,项目和集群角色。
集成镜像注册表
关于集成图像注册表的两个系统之间的关键区别:
使用Kubernetes,可以设置自己的Docker注册表,但没有集成镜像注册表的概念。
OpenShift附带了一个集成的镜像注册表,可以与Docker Hub或Red Hat一起使用。 它甚至还有一个注册表控制台,可以在其中搜索与集群中项目相关的镜像和镜像流的信息。
虽然Kubernetes中不存在该概念,但可以部署自己的自定义Jenkins镜像。 生成的组件是上传到镜像存储库的docker镜像。
OpenShift使用Pipeline构建,这是一种源到镜像构建的形式,它引用包含Jenkins的镜像,而Jenkins又监控ImageStreamsTags。 当需要更新时,它可以启动Jenkins构建。
网络
Kubernetes没有本机网络解决方案,但提供可供第三方网络插件使用的接口。
OpenShift有一个开箱即用的本机网络解决方案OpenvSwitch,它提供三种不同的插件。
两者都是开源软件平台,来满足容器编排和应用开发。 它们使得以简单易管理的方式部署和管理容器化应用成为可能。 OpenShift Web控制台使其非常有用,允许直接通过它执行80%以上的任务。
虽然两者都有类似的核心(毕竟OpenShift内置了Kubernetes),OpenShift通过其开箱即用的功能使安装更容易。 安装Kubernetes通常需要交钥匙解决方案或托管Kubernetes集群。
您选择的系统将取决于您的系统要求以及开发过程的关键灵活性或良好的Web界面。
使用 Cluster API 和 ArgoCD 创建和管理 Kubernetes 集群在本文中,我们将深入学习如何借助 Cluster API 和 ArgoCD 创建以及管理多个 Kubernetes 集群。 首先,我们会在本地使用 Kind 创建一个管理集群,然后在这个集群上安装 Cluster API。 接下来,我们利用 Cluster API 的 CLI 工具和 ArgoCD 实例来定义和部署新的工作负载集群。 Cluster API 提供了一系列的 CRD,用于自定义 Kubernetes 集群的安装配置。 虽然我们不会详细讨论这些 CRD 的具体实现,但 Cluster API 为管理集群生命周期提供了一个 CLI 工具,并支持在 AWS、GCP、Azure 等基础设施上创建集群。 在这里,我们将使用 Docker 和 Kind 实现在本地运行整个基础架构,并且 Cluster API 也是兼容的。 ArgoCD 是一个理想的工具,用于处理整个流程,因为它支持多集群管理。 通过在单个集群上安装 ArgoCD 实例,我们可以管理许多其他能够连接的集群。 在本解决方案的架构图中,可以看到整个基础设施在 Docker 上运行,管理集群上安装了 Cluster API 和 ArgoCD,随后使用这两个工具在 Kind 上创建新的集群。 我们将在工作负载集群(c1、c2)中应用一些 Kubernetes 对象,如 Namespace、ResourceQuota 或 RoleBinding。 为了实现这一流程,首先在 Kind 上创建管理集群。 在本地机器上安装 Docker、kubectl 和 kind 是必要的。 通过 Docker 基础设施运行 Kubernetes 工作负载集群,Kind 需要拥有访问 Docker 主机的权限。 接下来,我们初始化管理集群并安装 Cluster API。 成功安装后,我们可以通过 Cluster API CLI 工具生成用于定义新集群的 YAML 模板。 ArgoCD 实例安装到默认命名空间后,通过一键安装命令即可完成。 安装完成后,通过检查 Pod 状态来确保安装成功。 ArgoCD 还提供了一个 Web UI,我们可以通过配置 Ingress 对象和安装 Ingress 控制器来让服务可访问,或者使用 kubectl port-forward 命令在本地暴露服务。 登录 ArgoCD Dashboard 后,我们可以获取 admin 账号的初始密码,并使用该密码和用户名进行登录。 现在,我们已准备好使用 Cluster API 和 ArgoCD 创建 Kubernetes 集群。 使用 clusterctl 命令生成带有新 Kubernetes 集群声明的 YAML 资源清单。 生成清单后,将其保存为 文件。 清单中定义了 c1 集群,包含三个主节点和三个工作节点。 使用 ArgoCD 的 Git 仓库托管 Cluster API 资源清单,以便在 Kubernetes 集群上应用配置。 为此,我们创建了一个包含 Cluster API 对象的清单文件,并使用 Helm Chart 模板来参数化集群创建相关的属性,如集群名称、主节点和工作节点的数量或 Kubernetes 版本。 使用 Helm Chart 模板生成 文件,其中包含 YAML 格式的参数值。 为 c1 和 c2 集群分别创建了对应的 文件,并将它们存储在 Git 仓库的指定路径下。 创建 ArgoCD 应用程序时,我们需要指定 Git 仓库地址、清单目录以及包含集群配置的值文件。 对于 c1 和 c2 集群,我们使用了不同的 文件。 创建 ArgoCD 应用后,我们可以手动同步或启用自动同步选项,以通过 Cluster API 工具创建工作负载集群。 使用 ArgoCD 执行同步后,我们可以验证可用 Kubernetes 集群列表。 通过 kind 命令,我们可以确认现在拥有三个集群!使用 clusterctl 描述命令来检查集群状态。 为确保工作负载集群正常运行,我们需要在每个集群上安装 CNI 应用。 在文档中,我们推荐使用 Calico 插件。 安装时,我们需要将上下文切换到 kind-c1 和 kind-c2 集群,并导出 Kubeconfig 文件以修改对应地址。 安装完成后,我们可以再次使用 clusterctl 描述命令来验证集群状态。 为了使用 ArgoCD 管理工作集群,我们首先需要登录 ArgoCD,使用与 Web UI 交互时使用的相同凭据和 URL。 然后,我们可以使用 clusterctl 命令来添加集群。 成功添加后,我们可以在 ArgoCD 实例的集群列表中看到集群名称。 通过创建 ArgoCD 应用来管理工作负载集群上的配置,我们最终能够验证配置是否已成功应用于目标集群。
本文地址:http://www.hyyidc.com/article/35960.html