前言
Kubernetes 是 Google 推出的一个开源项目,用于自动化部署、扩展和管理容器化应用程序。Kubernetes 基于容器技术,提供了高可用性、易于扩展、灵活的部署方式等特点,是当前最流行的容器编排工具之一。
在本文中,我们将介绍如何在阿里云上部署 Kubernetes,并通过一个示例应用程序演示 Kubernetes 在容器编排中的使用。
准备工作
- 阿里云账号
- 阿里云 ECS 实例
- 安装 kubectl 工具
部署 Kubernetes 集群
在阿里云上部署 Kubernetes 集群可以选择使用阿里云容器服务(ACK)或阿里云专有云 Kubernetes Engine(ASK)。本文以阿里云容器服务(ACK)为例进行介绍。
创建 Kubernetes 集群
- 登录阿里云控制台,进入容器服务控制台。
- 在左侧导航栏中选择“Kubernetes” > “集群”。
- 单击“创建 Kubernetes 集群”按钮,根据提示填写集群名称、节点数量、节点规格等信息。
- 在“高级配置”中选择“自定义 VPC 网络”,在“可用区设置”中选择至少两个不同的可用区。
- 单击“下一步”按钮,核查信息后单击“创建集群”。
创建过程大约需要 10 分钟左右,完成后可在集群列表中查看到创建的 Kubernetes 集群。
连接 Kubernetes 集群
使用 kubectl 工具连接到 Kubernetes 集群,可以使用以下命令连接到集群:
kubectl config set-cluster kubernetes --server=https://<Cluster-IP>:<API-Server-Port> kubectl config set-credentials admin --username=<用户名> --password=<密码> kubectl config set-context kubernetes --cluster=kubernetes --user=admin kubectl config use-context kubernetes
其中 <Cluster-IP>
是 Kubernetes 集群的 API 服务器 IP 地址,<API-Server-Port>
是 API 服务器端口,<用户名>
和 <密码>
是登录 API 服务器的认证信息。
连接成功后,可以使用 kubectl 命令管理 Kubernetes 集群,例如查看节点、命名空间、服务等信息:
kubectl get node kubectl get namespace kubectl get service
示例应用程序
在本文中,我们将使用一个示例应用程序演示 Kubernetes 在容器编排中的使用。该示例应用程序是一个 Web 应用程序,使用 Python Flask 框架编写,在容器中运行。源代码可以在 GitHub 上获取。
部署示例应用程序
首先,我们需要将示例应用程序打包成 Docker 镜像并上传到容器镜像仓库。假设我们已经将示例应用程序打包成 hello-app 镜像并上传到阿里云容器镜像服务。
接下来,我们创建一个 Kubernetes Deployment 对象来运行示例应用程序。Deployment 对象可以在 Kubernetes 集群中部署和管理应用程序的多个副本。
在示例应用程序的源代码目录下,创建一个名为 hello-app-deployment.yaml 的文件,填写以下内容:
-- -------------------- ---- ------- ----------- ------- ----- ---------- --------- ----- --------- ------- ---- --------- ----- --------- - --------- ------------ ---- --------- --------- --------- ------- ---- --------- ----- ----------- - ----- --------- ------ -------------------------------------------------------- - ----------- ------ - -------------- ----
然后,通过 kubectl 命令将 Deployment 对象部署到 Kubernetes 集群中:
kubectl apply -f hello-app-deployment.yaml
上述命令将创建一个名为 hello-app 的 Deployment 对象,并在 Kubernetes 集群中运行 3 个示例应用程序副本。每个副本都是一个容器,使用示例应用程序的 Docker 镜像启动。
创建 Service 对象
Deployment 对象只负责在 Kubernetes 集群中运行示例应用程序副本,我们还需要使用 Kubernetes Service 对象来暴露应用程序的服务。
Service 对象是一种虚拟的资源,将请求路由到正确的示例应用程序副本。在 Kubernetes 中,Service 对象通常与 Deployment 对象配合使用,以在 Kubernetes 集群中运行托管应用程序的多个副本,并暴露与应用程序相关的服务。
在示例应用程序的源代码目录下,创建一个名为 hello-app-service.yaml 的文件,填写以下内容:
-- -------------------- ---- ------- ----------- -- ----- ------- --------- ----- --------- ----- ----- ------------ --------- ---- --------- ------ - ----- ---- ----- -- ----------- ----
然后,通过 kubectl 命令将 Service 对象部署到 Kubernetes 集群中:
kubectl apply -f hello-app-service.yaml
上述命令将创建一个名为 hello-app 的 Service 对象,并将其暴露为 Kubernetes 集群外部的负载均衡器。该负载均衡器将根据流量路由规则将请求路由到示例应用程序副本。
访问示例应用程序
在 Kubernetes 集群部署示例应用程序后,可以通过以下方式访问该应用程序:
登录阿里云控制台,进入容器服务控制台。
在左侧导航栏中选择“Kubernetes” > “集群”。
在创建的 Kubernetes 集群上单击“工作负载”标签页。
在“Deployment”列表中单击“hello-app” Deployment 对象。
在“Pod”列表中选择任意一个示例应用程序副本。
在“Pod”详情页中单击“远程登录”按钮,使用 SSH 登录到任意一个示例应用程序副本。
在示例应用程序副本内部运行以下命令启动 Web 服务器:
FLASK_APP=main.py flask run --host 0.0.0.0 --port 8080
该命令将启动 Python Flask Web 服务器,监听端口 8080 并处理传入的 HTTP 请求。
登录阿里云控制台,查找负载均衡器的公网 IP 地址。
在 Web 浏览器中使用该 IP 地址访问示例应用程序,应该可以看到 Hello, world! 的欢迎页面。
结论
本文介绍了如何在阿里云上部署 Kubernetes 集群,并通过一个示例应用程序演示了 Kubernetes 在容器编排中的使用。使用 Kubernetes 可以轻松部署和管理容器化应用程序,提高应用程序的可用性和可扩展性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/671401f8ad1e889fe2118f0c