Kubernetes部署实操教程

本文介绍了Kubernetes的部署实践,包括在AWS、Azure和Google Cloud上的实现。讲解了Kubernetes的主要组件如API Server、Scheduler和Controller Manager,以及工作节点、Docker和Kubelet的角色。同时,提到了Kubectl命令行工具、Ingress的创建和管理,以及使用CircleCI进行持续集成和部署的流程。提供了多个参考链接和资源,帮助读者深入了解Kubernetes的部署和管理。
摘要由CSDN通过智能技术生成

640


之前,我们基本都是单体Web应用程序:大型的代码库,随着新的功能和特性不断发展,最后它们都会变成巨大的,缓慢移动的,难以管理的巨人。 现在,越来越多的开发人员,架构师和DevOps专家认为,使用微服务比使用大型单体应用更好。 通常,使用基于微服务的体系结构意味着将你的单体应用分成至少两个应用程序:前端应用程序和后端应用程序(API)。在决定使用微服务之后,出现了一个问题:在什么环境下运行微服务更好? 我应该选择什么来使我的服务稳定,易于管理和部署?简短的回答是:使用Docker!
在本文中,我将介绍容器,解释Kubernetes,并教你如何使用CircleCI将应用程序容器化和部署到Kubernetes集群。
Docker?什么是Docker?

640


Docker是一款旨在让DevOps(和你的生活)更轻松的工具。使用Docker,开发人员可以在容器中创建,部署和运行应用程序。容器允许开发人员使用所需的所有部件(例如库和其他依赖项)打包应用程序,并将其作为一个包发布出去。 
640
使用容器,开发人员可以轻松将镜像(重新)部署到任何操作系统。 只需安装Docker,执行命令,你的应用程序即可启动并运行。哦,不要担心主机操作系统中新版本库的任何不一致。此外,您可以在同一主机上启动很多容器——不管是相同的应用程序还是其他应用程序,都没关系。
看起来Docker是一个很棒的工具。但是我应该如何以及在何处启动容器?运行容器的方式有很多选择:
  • AWS Elastic Container Service(AWS Fargate或具有水平和垂直自动伸缩的预留实例);

  • Azure或Google Cloud中具有预定义Docker镜像的云实例(包含模板,实例组和自动缩放);

  • 在你自己的服务器上;

  • 当然还有Kubernetes!Kubernetes是2014年由Google工程师专门为虚拟化和容器创建的。


Kubernetes?那是什么?

640


Kubernetes是一个开源系统,允许你运行容器,管理容器,自动化部署,扩展部署,创建和配置Ingress,部署无状态或有状态应用程序以及许多其他内容。基本上,你可以启动一个或多个实例来安装Kubernetes,将其作为Kubernetes集群进行操作。然后获取Kubernetes集群的API端点,配置kubectl(管理Kubernetes集群的工具),Kubernetes即可投入使用。
那我为什么要用Kubernetes呢?

640


使用Kubernetes,你可以最大限度地利用计算资源。 通过Kubernetes,你将成为你的船(基础设施)的船长,Kubernetes将为你扬帆。 使用Kubernetes,你的服务将是高可用的。最重要的是,通过Kubernetes,你将节省大量资金。
看起来很有前途,特别是如果它会省钱!让我们来谈谈它!
Kubernetes日复一日地更加受欢迎。让我们更深入地研究一下这幕后的内容。 
640译者注:上图有个小错误,kubectl写成了kubecti。
Kubernetes是整个系统的名称,但与你的汽车一样,有许多小部件可以完美地彼此协同工作以使Kubernetes发挥其各种作用。让我们来了解它们分别是什么。
主节点(Master Node)——整个Kubernetes集群的控制面板。主节点的组件可以在群集中的任何节点上运行。关键组成部分是:
  • API Server:所有REST命令的入口点,是用户可以访问的主节点的唯一组件。

  • Datastore:Kubernetes群集使用的强大,一致且高可用的键值存储。

  • Scheduler:监视新创建的Pod并将它们分配给节点。Pod和Services部署到节点上主要由Scheduler来控制。

  • Controller manager:管理着处理集群中日常任务的所有控制器。

  • Worker Node:主要的节点代理,也称为minion(旧版本Kubernetes的叫法)。Pod在这里运行。工作节点包含所有必要的服务,这些服务包括管理容器之间的网络,与主节点通信以及将资源分配给已调度容器等。

  • Docker:运行在每个工作节点上,用来下载镜像和启动容器。

  • Kubelet:监视Pod的状态并确保容器已启动并运行。它还与数据存储通信,获取有关服务的信息并记录新创建的服务的详细信息。

  • Kube-proxy:单个工作节点上的服务的网络代理和负载均衡。它负责流量路由。

  • Kubectl:一个CLI工具,供用户与Kubernetes API Server进行通信。


那什么是Pod和Services?

640


Pod是Kubernetes集群中最小的单元,就像一座巨大建筑物墙上的一块砖。 Pod是一组需要一起运行并且可以共享资源的容器(Linux名称空间,cgroups,IP地址)。Pod的生命周期是非永久性的。
Service是在多个Pod之上的抽象,通常需要在它上面有层代理,以便其他服务通过虚拟IP地址与其通信。
一个简单部署例子

640
我将使用简单的Ruby on Rails应用程序和GKE作为运行Kubernetes的平台。实际上,你可以在AWS或Azure中使用Kubernetes,甚至可以在你自己的硬件中创建集群,或使用你minikube在本地运行Kubernetes,所有的选项你都可以在这个页面Setup - Kubernetes[1]上找到。
这个app的源码你可以在GitHub - d-kononov/simple-rails-app-in-k8s[2]里找到。
要创建新的Rails应用程序,请执行:
 
 
  1. rails new blog


在 config/database.yml文件中配置生产MySQL连接:
 
 
  1. production:

  2.  adapter: mysql2

  3.  encoding: utf8

  4.  pool: 5

  5.  port: 3306

  6.  database: <%= ENV['DATABASE_NAME'] %>

  7.  host: 127.0.0.1

  8.  username:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值