【易客吧】_全网激活码总代_激活码商城

您现在的位置是:首页 > 热门资讯 > 正文

热门资讯

在云平台上安装部署 Kubernetes:AWS、Azure、GCP (在云平台上安装app)

用户投稿2024-04-16热门资讯20

Kubernetes 是一个开源的容器编排系统,用于管理和部署容器化应用程序。它可以在多种云平台上运行,包括 AWS、Azure 和 GCP。

本文档将指导您如何在 AWS、Azure 和 GCP 上安装和部署 Kubernetes。

AWS

先决条件

AWS 账户具有 SSH 访问权限的 EC2 实例Kubernetes 版本 1.20 或更高版本

安装

1. 使用以下命令安装 kubeadm:```bashcurl -s| sudo apt-key add -echo "debkubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.listsudo apt updatesudo apt install -y kubeadm kubelet kubectl```2. 初始化 Kubernetes 集群:```bashkubeadm init --pod-network-cidr=10.244.0.0/16```3. 加入其他节点:```bashkubeadm join 192.168.1.10:6443 --token 520m9h.0x56wn5w3pbh1148d --discovery-token-ca-cert-hash sha256:e8d8816bbf022a7c11b34f67774604782f0e5630b055278bca0c570d99c1091e```

部署应用程序

1. 创建一个部署文件:```yamlapiVersion: apps/v1kind: Deploymentmetadata:name: my-app-deploymentspec:selector:matchLabels:app: my-apptemplate:metadata:labels:app: my-appspec:containers:- name: my-appimage: nginx:1.17.10ports:- containerPort: 80```2. 创建部署:```bashkubectl create -f my-app-deployment.yaml```

验证

1. 检查 Pod 是否正在运行:```bashkubectl get pods```2. 访问应用程序:```bashcurl```

Azure

先决条件

Azure 订阅Azure 资源组Kubernetes 版本 1.20 或更高版本

安装

1. 使用以下命令安装 kubeadm:```bashaz aks install-cliaz aks enable-addons --addons kubedns --name my-resource-groupaz aks get-credentials --resource-group my-resource-group --name my-aks-cluster```2. 初始化 Kubernetes 集群:```bashkubeadm init --pod-network-cidr=10.244.0.0/16```3. 加入其他节点:```bashkubeadm join 192.168.1.10:6443 --token 520m9h.0x56wn5w3pbh1148d --discovery-token-ca-cert-hash sha256:e8d8816bbf022a7c11b34f67774604782f0e5630b055278bca0c570d99c1091e```

部署应用程序

1. 创建一个部署文件:```yamlapiVersion: apps/v1kind: Deploymentmetadata:name: my-app-deploymentspec:selector:matchLabels:app: my-apptemplate:metadata:labels:app: my-appspec:containers:- name: my-appimage: nginx:1.17.10ports:- containerPort: 80```2. 创建部署:```bashkubectl create -f my-app-deployment.yaml```

验证

1. 检查 Pod 是否正在运行:```bashkubectl get pods```2. 访问应用程序:```bashcurl```

GCP

先决条件

GCP 项目具有 SSH 访问权限的 GCE 实例Kubernetes 版本 1.20 或更高版本

安装

1. 使用以下命令安装 kubeadm:```bashcurl -s| sudo apt-keyadd -echo "debkubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.listsudo apt updatesudo apt install -y kubeadm kubelet kubectl```2. 初始化 Kubernetes 集群:```bashkubeadm init --pod-network-cidr=10.244.0.0/16```3. 加入其他节点:```bashkubeadm join 192.168.1.10:6443 --token 520m9h.0x56wn5w3pbh1148d --discovery-token-ca-cert-hash sha256:e8d8816bbf022a7c11b34f67774604782f0e5630b055278bca0c570d99c1091e```

部署应用程序

1. 创建一个部署文件:```yamlapiVersion: apps/v1kind: Deploymentmetadata:name: my-app-deploymentspec:selector:matchLabels:app: my-apptemplate:metadata:labels:app: my-appspec:containers:- name: my-appimage: nginx:1.17.10ports:- containerPort: 80```2. 创建部署:```bashkubectl create -f my-app-deployment.yaml```

验证

1. 检查 Pod 是否正在运行:```bashkubectl get pods```2. 访问应用程序:```bash curl```

为什么你的创业公司应该运行在 Kubernetes 上

从 2019 年初开始,就有不少创业公司陆陆续续向我咨询 Kubernetes 等云原生技术。

在云平台上安装部署 Kubernetes:AWS、Azure、GCP (在云平台上安装app) 第1张

我总是会问这些创业公司的部署流程是怎样的,因为这能让我大概了解到一个公司的技术复杂度处在哪个阶段。有些公司仅仅使用scp部署简单的PHP应用程序,就能让公司走的很远,而有些公司的架构达到极限,不得不使用诸如Redis或者Kafka这样的基础组件作为内部通信,从而将系统拆分为不同的服务。

当他们知道我的履历里有Kubernetes的相关实战经验后,便总会问起它。大多数公司对上手Kubernetes很感兴趣,但同时也对Kubernetes是否适用于特定的用例表示出了担心。我在上一家公司是怎样使用它的?学习它困难吗?开发团队有哪些使用它的经验?

当然,有时候一些关于实施不当的可怕故事会使他们担心迁移到Kubernetes是一个错误。经常听到一些非常合理的怀疑,同时又希望部署更加简单但又犹豫不决已经成为一种常态。

所以这里我直接切入重点。基于我已经在两家非常不同的公司使用了Kubernetes,如果我今天从头开始做一家创业公司,我极有可能从Kubernetes开始。这是我的结论。

简而言之,运用Kubernetes带来的积极因素远远超过了少数不利因素。我认为它值得许多创业公司的投资。并非所有的创业公司,也不一定是你的公司,但是一定有很多这样的公司 。

让我们来看一下几点原因。

Kubernetes最初是由Google开发的开源容器编排系统,后来被贡献给了开源社区,目前有大量新的第三方库和插件(术语叫做operators)。

Kubernetes不是像阿里云或者腾讯云这样的云平台,事实上,你可以在自己的数据中心,硬件上运行和部署Kubernetes,不过我不建议初学者使用。它更像是一种用来描述工作系统的语言。一旦我们对系统进行了足够详细的描述,Kubernetes便可以使用其计算资源(Kubernetes的术语是nodes)来执行系统的容器。

对于初创公司来说,最大的好处就是,这种“描述工作系统”的过程可作为文档和代码的集中位置来定义基础架构 。

我不想撒谎,像AWS或者阿里云的Kubernetes容器服务目前价格偏高,除了最少3到5个实例节点外,还需要一部分管理费。但是请考虑你要花多少钱才能让工程师手动启动节点。这些纯粹的基础架构变更所浪费的时间仅仅是在开发产品上花费的时间。如果你是一家想实现下一个更大目标的公司,你应该乐于付出合理的开销,以神奇的方式消除团队中容易出错且耗时的过程。

使用现成的Terraform工具,你还可以通过简单的单行更改创建一个可以扩展的集群。在我的上一个团队,我们仅仅通过将Git提交命令从2改到4,就将集群从2个节点增长到了四个节点。添加节点后,Kubernetes会自动将资源移动到新的节点上,不需要进一步的工作。然后你可以继续解决工作中的实际问题。

传统的Linux生产系统通常看起来像这样:你有一些用Java,Python或Ruby编写的代码。应用程序代码通常由不太了解服务器的人编写(或者至少没有服务器的实践经验)。

假设你有一台机器在阿里云ECS中,由你的运营团队中的某人管理,该人不太了解应用程序代码。当应用程序团队完成某些工作时,他们希望能够部署这些更改。运维团队希望确保所做的更改不会破坏任何系统的内容。

你也不希望系统在部署期间离线。如果出现问题,你希望能够回滚到以前的代码版本。从上载资产到启动服务器的部署过程需要30分钟怎么办?难道要将系统离线30分钟吗?可能不会。你可能会想出一些系统来保持版本n-1的运行,直到版本n启动为止,此时你将切换到新版本。

这听起来确实有点复杂,有很多要记住的地方,还有很多可能出错的地方。这些部署规则会用一系列脚本进行编写,这些脚本需要进行版本控制和维护,并且很可能本身包含错误。而且,当我们将公司扩展为各个独立的团队时,他们所有人都可能一天多次部署。然后噩梦就开始了。运维团队开始对系统中的客户流失感到不知所措。随着过程变得越来越繁琐,部署花费的时间也越来越长。

这个故事听起来很熟悉吗?

Kubernetes消除了很多复杂性。要部署新版本的服务,我们可以简单地更新容器镜像以指向新版本的代码。我们还可以定义运行状况检查,以在宣布新版本正常运行之前执行该检查。如果未通过,则旧版本的代码将继续运行 。

我们可以使用仅供内部使用的DNS名称(例如order_service)定义服务,该名称将自动平衡正在运行的副本的负载。无需维护运行实例的列表。并且,如果我们在部署后发现问题,则可以使用简单的回滚命令查找先前的容器镜像并将其应用。通常这只需要几秒钟,然后我们回到运行软件的最新已知稳定版本。

听起来不是很好吗?

我在一些复杂的系统上工作过,这些系统要求管理部署的人员了解a)Python,b)Bash,c)我们正在运行的OS版本的一些细微差别,d)JVM标志,e) SCP命令(您可以在不查看文档的情况下编写有效的SCP命令吗?)……等等。

还有一些组织开销。部署脚本和基础结构代码通常由运维团队管理。但是开发人员经常需要更改部署代码,例如,在启动时设置标志,并扩大系统规模。这在开发人员和操作人员之间造成了紧张关系,因为这两个团队之间产生了彼此的要求,但往往会遵循不同的目标。

所有的这些复杂性会增加你在启动过程中的开销。如果你想快速开发新功能并且能够轻松地从一个项目跳到另一个项目,想保持尽可能小的摩擦。那么Kubernetes消除了很多痛苦,让你专注于产品。

当然这个世界上没有灵丹妙药,而且在某些情况下,像Kubernetes这样的东西有点过于庞大。

如果你只是运行WordPress,则不需要Kubernetes。如果你运行的CMS只是偶尔进行一次升级,升级库或安装插件,而实际上从未真正部署过,则不需要Kubernetes。Kubernetes确实是针对管理大型,不断变化的系统进行了优化。

显然,如果你要编写需要与Linux内核接口的底层嵌入式系统或软件,那么Kubernetes不适合你。这适用于任何容器化解决方案。

Kubernetes确实有一种称为“状态集”的资源类型,旨在运行诸如数据库和管理状态的消息代理之类的东西。从理论上讲,运行有状态集可以允许您运行多个副本并上下缩放它们,以及附加和扩展存储。但是这样做总是让我有些紧张。借助应用程序服务,我希望使开发人员可以轻松调整设置和部署,而不会遇到麻烦。对于数据库,反而相反。因为意外更改设置或将系统升级到新版本比较少见。我也不想让我的数据库在集群中争夺CPU和内存。

如果我使用的是阿里云并且可以访问RDS,那么我特别倾向于不使用Kubernetes来存储数据库。你选择的云提供商中的RDS或类似产品将更易于管理自动备份,扩展和监控。

Kubernetes非常适合需要随时间扩展和增长的任何项目 。

如果你是一家初创公司,那么几乎可以肯定你属于该类别。你现在可能很小,但是你在不断成长。这就是你说服投资者的理由,也是你聘请如此多开发人员的原因。你的系统将要快速更改和扩展,因此你希望以尽可能减少成本和摩擦的方式构建系统。

仅出于这个原因,我认为任何电子商务,SaaS或类似公司尽早投资Kubernetes都是有意义的。即使你只是在集群中部署单个简单的Web应用程序,对未来进行规划也意味着精心构建基础架构,以使你的团队能够快速移动一年或三年。

私有云是什么?私有云平台哪个好?

私有云是什么(参考:网络百科)

私有云(Private Clouds)是为一个客户单独使用而构建的,因而提供对数据、安全性和服务质量的最有效控制。该公司拥有基础设施,并可以控制在此基础设施上部署应用程序的方式。私有云可部署在企业数据中心的防火墙内,也可以将它们部署在一个安全的主机托管场所,私有云的核心属性是专有资源。

私有云平台哪个好?

私有云平台的搭建涉及的组件比较多,下面重点讲解目前3大主流企业级私有云落地方案,及其各自优缺点:

一个有趣的现象是,由于 HCI 架构为私有云带来的诸多优势,方式 1、2 也都衍生了基于超融合架构的落地方案,以下逐一介绍。

公有云移植构建私有云

将公有云移植到企业数据中心,方案最大的优势是它来自于公有云成功经验,并经过长时间,大规模营运的考验,拥有比较全面的功能,以 AWS 为例展示其落地方案及架构。

AWS 以 EC2 (Elastic Compute)服务为核心提供虚拟计算能力,

S3(对象存储)和 EBS(块存储)等服务提供虚拟存储能力,由 VPC 等网络服务提供虚拟网络能力,以及包括其他安全及管理工具共同构建 IaaS 层。在 PaaS 层也有非常丰富的解决方案,在这里不再一一赘述。AWS 的私有云方案基本上就是按照 AWS 标准, 包括硬件、软件,甚至运营整体交付到企业用户数据中心里面,这类方案比较明显的特征是非常依赖公有云供应商的自有生态。

近几年,AWS、Azure 等公有云供应商,在落地私有云的基础架构方案时也推出了类似如 AWS Outpost、Azure Stack HCI 等超融合架构进行交付。

Azure Stack HCI Solution

这些方案的优势是可以在一家厂商获得从私有到公有云的统一方案和服务,但也存在诸如以下弊端:1.产品封闭,例如Azure Stack HCI 只能支持Hyper-v虚拟平台,并且无法形成多云方案;2.前期投入大且完全新建,对原有VMware等系统无法管理。

开源软件构建私有云

使用开源软件构建私有云,实际上利用多个开源软件分别完成 IaaS、PaaS等各层的构建。这种方案的重点依然在 IaaS 层构建之上,其中 OpenStack 是无疑是最热门的开源 IaaS 平台之一,以下是以 OpenStack 为中心构建私有云的架构图。

由于 OpenStack 本质上是一个 IaaS 的框架,需要结合其他的软件才能完成 IaaS 层的构建 ,通过下图展示 OpenStack 方案的组成。

通过上图可以看到 :

本身不直接提供服务虚拟化、存储、网络等功能。

Nova 计算组件负责对接 Hypervisor 软件,如:KVM、VMware vSphere、XenServer 等,实际上由 Hypervisor 提供服务器虚拟化功能。

3. 存储方面可能选择的方案包括 SDS、传统集中式存储等。

目前,市场上同样出现了基于 Openstack、KVM、Ceph 等开源产品整合的超融合方案,基于开源的方案可以快速从社区获得最新的功能,但以超融合产品交付存在着诸多问题 架构复杂、大量模块在超融合中并不需要,商用程度差,且计算资源要求高;2.基于开源的Ceph同样模块和代码复杂,服务商对产品核心问题无法有效支持,且Ceph对计算资源消耗高较高,IO密集型场景性能也表现欠佳;3.此类超融合方案一般对VMWare都无法有效支持。因此,此类方案实际上无法真正达到超融合产品简单、稳定、高效、开放等特点。

使用成熟的商用生态打造私有云

使用商用生态组件打造私有云,其优点是方案经过来自不同行业的实践验证、并且能获得来自厂商的持续的服务与支持。另外,基于这种模式用户可以采取逐步扩展与完善组件的策略来完成私有云的构建,通过这种模式实现私有云切换的代价是最小的。

在资源池的构建上方式上,以往 VMware vSpere 、FC 网络、FC SAN 存储传统三层式架构占据统治地位,但超融合方案正在越来越多地替换原有的架构。VMware、SmartX、等主流超融合厂商配合成熟的商用 CMP 产品都提供了诸多基于超融合架构的私有云案例。相比于以上两种方案,该落地方案具有独特的特点:

1.相比于公有云厂商以及全栈的私有云方案,该方案具备更好的开放性,更灵活轻量;

2. 相比于基于的开源产品,该方案稳定简单,具备真正“生产就绪“能力。

大规模软件系统有哪些

大规模软件系统有很多,以下是一些比较知名的例子:1. **Apache Hadoop/Apache Spark**:这两个都是大数据处理系统,用于处理大规模数据集。 Hadoop是一个分布式计算框架,而Spark则是一个大规模并行计算平台。 2. **Amazon Web Services (AWS)**:AWS是一个云服务平台,提供了各种大规模软件系统,如数据库、缓存系统、消息队列、负载均衡器等。 3. **Google Cloud Platform (GCP)**:GCP是谷歌的云服务平台,也提供了各种大规模软件系统,如数据库、缓存系统、消息队列、容器、存储等。 4. **Microsoft Azure**:Azure是微软的云服务平台,也提供了各种大规模软件系统,如数据库、缓存系统、容器、存储等。 5. **Docker**:Docker是一个开源平台,用于构建、部署和管理应用程序的容器化环境。 它支持大规模的微服务架构和云原生应用。 6. **Kubernetes**:Kubernetes是一个开源平台,用于自动化部署、扩展和管理容器化的应用。 它适用于大规模的微服务架构和云原生应用。 7. ****是一个基于JavaScript的开源运行环境,常用于构建大规模的实时应用和后台服务。 8. **Red Hat JBoss**:这是一个企业级应用服务器,支持大规模的Web应用和微服务架构。 这些系统都通过分布式架构、负载均衡、容错处理等技术,实现了高可用性、可扩展性和高性能,以应对大规模数据的处理和应用的部署。

若对本页面资源感兴趣,请点击下方或右方图片,注册登录后

搜索本页相关的【资源名】【软件名】【功能词】或有关的关键词,即可找到您想要的资源

如有其他疑问,请咨询右下角【在线客服】,谢谢支持!

在云平台上安装部署 Kubernetes:AWS、Azure、GCP (在云平台上安装app) 第2张

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~
你上次访问网站的时间为:24-05-17,10:54:17 你第3访问网站的时间为:24-05-17 10:54:23