当前位置:首页 > 虚拟机 > 正文

k8s部署在物理机还是虚拟机


一、十分钟了解kubernetes的核心概念

下面简单介绍一下Kubernetes的基本概念。由于这些定义可以在Kubernetes官方文档中找到,因此以下段落将避免使用该文档的中文地址。相反,我们将使用图表和示例来解释这些概念,这可以帮助我们充分理解一些较晦涩的概念。

Kubernetes(k8s)是一个用于自动化容器操作的开源平台,包括跨节点集群的部署、调度和扩展。如果您曾经使用过docker容器技术来部署容器,您可能会认为docker是Kubernetes内部使用的低级组件。Kubernetes不仅支持docker,还支持rocker(另一种容器技术)。

使用Kubernetes有以下特点:

事实上,Kubernetes只需要一个部署文件,就可以部署完整的多层容器集群(前端和后端)一键点击。

簇是一组段。这些节点可以是物理服务器,也可以是安装了Kubernetes平台的虚拟机。下图展示了这样一个集群。请注意,概述经过简化以强调关键概念。

上图中可以看到以下组件,使用特殊的图标来表示Service和Label:

Pod(上图中的绿色框)布置在节点上,包括一组容器和卷。同一Pod中的容器共享命名的网络空间,并且可以使用localhost相互通信。Pod是短暂且非持久的实。您可能有以下疑问:

如上,某些Pod带有标签。标签是附加到Pod上的键值对,用于传递用户定义的属性。例如,您可以创建“tier”和“app”标签,为前端pod容器添加Label(tier=frontend,app=myapp)标签,为后端容器添加Label(tier=backend,app=myapp)标签,然后使用选择器选择具有特定标签的Pod并向其应用服务或ReplicationController。

是否应该手动创建pod如果要创建同一个容器的多个副本,是否必须一一创建?Pod可以分为逻辑组吗?

ReplicationController确保随时运行特定数量的pod副本。如果你为一个Pod创建ReplicationController并指定3个副本,它将创建3个副本并持续监控它们。如果pod变得无响应,ReplicationController将替换它。

如果之前没有响应的Pod恢复,现在有4个Pod,ReplicationController将终止其中一个Pod,并将总数保持在3。如果在操作过程中将副本总数更改为5,ReplicationController将立即启动2个新pod,以确保总数为5。您还可以通过这种方式缩小pod,这在进行滚动升级时很有用。

创建ReplicationController时,需要做两件事:

既然Pod副本已经创建,那么如何平衡这些副本上的负载呢?我们需要的是服务。

如果Pod是短暂的。所以重启后IP地址可能会改变。如何才能正确可靠地将前端容器指向后端容器呢?

该服务是一个抽象层,定义了一组Pod以及用于访问这些Pod的策略。该服务通过Label找到Pod组。由于服务是抽象的,它们通常在图表中不可见,这使得概念更难以理解。

现在,假设您有两个后端Pod,并将后端服务名称定义为“backend-service”,将标签选择器定义为(tier=backend,app=myapp)。backend-service会做以下两件重要的事情:

下面的动画展示了Service的功能。请注意,该图已被大大简化。在不涉及网络配置的情况下,实现透明负载平衡目标所涉及的底层网络和路由是相对高级的。

有一种特殊类型的KubernetesService称为“LoadBlancer”,它用作外部负载均衡器,临时平衡一定数量的pod之间的负载。

节点(顶部橙色框)是物理机或虚拟机,充当KubernetesWorker,通常称为Minion。每个节点都运行以下关键的Kubernetes组件:

集群有一个KubernetesMaster(紫色框)。KubernetesMaster提供集群的单一视图,并具有许多组件,例如KubernetesAPIService。APIServer提供可用于与集群交互的REST端点。主节点包括用于创建和复制Pod的ReplicationController。

需要十分钟的时间,你就能了解Kubernetes的基本概念

下面我们将继续理解概念和概念,最后尝试使用它们。


二、企业级k8s集群部署

二进制包

注意:建议使用二进制包来部署Kubernetes集群,虽然手动部署比较麻烦,但是可以学到很多工作原理,方便后期维护。

环境

可以使用VMware虚拟机,主机内存必须8G以上

•服务器可以访问外网,并且有是需要从互联网上吸引图片

单主服务器规划:(注:使用过程中可根据具体环境调整IP地址)




这里我们使用3台机器组成集群,可以容忍1台机器的故障,当然也可以使用5台机器组成集群

etcd1:192.168.3.110etcd2:192.168.3.112etcd3:是一个开源证书管理工具,使用json文件生成证书,比openssl更容易使用。

这里使用的是寻找任意一台服务器来操作MasterNode。

创建工作目录:

自签名CA:

生成证书:

和将生成的文档。

创建证书请求文件:

注意:上述文件的host字段中的IP是所有etcd节点的集群内部通信IP,无一遗漏!为了方便后期扩展,可以多写几个保留的IP。

生成证书:

将生成文件和。