关注分享主机优惠活动
国内外VPS云服务器

在Centos7中安装和部署Kubernetes(k8s)集群的实现过程

一、系统环境服务器版本docker软件版本CPU架构CentOS Linux版本7.4.1708(核心)Docker版本20.10.12 x86 _ 64

2.引言下图描述了软件部署方式的变化:传统部署时代、虚拟部署时代、容器部署时代。

在Centos7中安装和部署Kubernetes(k8s)集群的实现过程-主机频道

传统部署时代:

在早期,组织在物理服务器上运行应用程序。因为物理服务器上运行的应用资源无法限制,所以会导致资源分配问题。例如,如果多个应用程序在同一个物理服务器上运行,一个应用程序可能会占用大部分资源,从而导致其他应用程序的性能下降。一种解决方案是将每个应用运行在不同的物理服务器上,但是当一个应用的资源利用率不高时,剩余的资源无法分配给其他应用,维护很多物理服务器的成本很高。

虚拟部署时代:

因此,引入了虚拟化技术。虚拟化技术允许您在一台物理服务器的CPU上运行多个虚拟机(VM)。虚拟化可以隔离不同虚拟机之间的应用程序,并提供一定程度的安全性,因为一个应用程序的信息不能被另一个应用程序随意访问。

虚拟化技术可以更好地利用物理服务器的资源,并且因为应用程序可以很容易地添加或更新,所以它可以具有更高的可扩展性和更低的硬件成本。通过虚拟化,您可以将一组物理资源呈现为可任意使用的虚拟机集群。

每个虚拟机都是一台完整的计算机,在虚拟化硬件之上运行所有组件,包括其自己的操作系统。

容器部署时代:

容器类似于VM,但是具有更宽松的隔离特性,操作系统(OS)可以在容器之间共享。因此,容器被认为比虚拟机更轻量级。与VM类似,每个容器都有自己的文件系统、CPU、内存、进程空间等等。因为它们与基础设施分离,所以可以跨云和操作系统发行版进行迁移。

容器因其许多优点而变得流行,例如:

敏捷的应用创建和部署:与使用VM镜像相比,它提高了容器镜像创建的简单性和效率。持续开发、集成和部署:通过快速简单的回滚(由于映像的不变性),提供可靠和频繁的容器映像构建和部署。注重开发和运维的分离:在构建和发布的时候,而不是部署的时候,创建一个应用容器映像,从而将应用和基础设施分离开来。可观察性:它不仅可以显示OS级信息和指标,还可以显示应用程序健康状况和其他指标信号。跨开发、测试和生产的环境一致性:您也可以在笔记本电脑上运行与云中相同的应用程序。跨云和操作系统分发的可移植性:它可以运行在Ubuntu、RHEL、CoreOS、local、Google Kubernetes引擎和其他任何地方。以应用为中心的管理:提高抽象级别,从在虚拟硬件上运行操作系统到使用逻辑资源在操作系统上运行应用。松耦合、分布式、弹性、解放的微服务:应用被分解成更小的独立部分,-可以动态部署和管理,而不是运行在大型单机上。资源隔离:可预测的应用程序性能。资源利用:高效率、高密度。

三。库伯内特斯

3.1概述Kubernetes是一个可移植和可扩展的开源平台,用于管理容器化的工作负载和服务,可以促进声明式配置和自动化。Kubernetes拥有一个庞大且快速增长的生态,其服务、支持和工具被广泛使用。

Kubernetes这个名字来源于希腊语,意思是& ldquo舵手& rdquo或者& ldquo试点& rdquo。缩写k8s是因为K和s之间有八个字符,谷歌在2014年开启了Kubernetes项目。Kubernetes基于Google十多年大规模运行生产工作负载的经验,结合了社区中的最佳理念和实践。

Kubernetes为您提供了以下功能:

服务发现和负载平衡:Kubernetes可以使用DNS名称或自己的IP地址来公开容器。如果进入容器的流量很大,Kubernetes可以对网络流量进行负载平衡和分配,从而使部署稳定。存储:Kubernetes允许您自动挂载自己选择的存储系统,比如本地存储、公共云提供商等。自动部署和回滚:您可以使用Kubernetes来描述已部署容器的所需状态,它可以以受控的速率将实际状态更改为所需状态。例如,您可以自动化Kubernetes为您的部署创建新的容器,删除现有的容器,并将它们的所有资源用于新的容器。自动打包计算:您为Kubernetes提供了一个包含许多节点的集群,并在这个集群上运行容器化的任务。告诉Kubernetes每个容器需要多少CPU和RAM。Kubernetes可以根据实际情况将这些容器调度到您的节点上,以充分利用您的资源。自我修复:Kubernetes将重启失败的容器,替换容器,杀死不响应用户定义的健康检查的容器,并且在服务准备好之前不通知客户端。密钥配置管理:Kubernetes允许您存储和管理敏感信息,比如密码、OAuth令牌和ssh密钥。您可以部署和更新密钥和应用程序配置,而无需重新构建容器映像,并且不需要在堆栈配置中公开密钥。

3.2 Kubernetes组件Kubernetes集群架构如下:

在Centos7中安装和部署Kubernetes(k8s)集群的实现过程-主机频道

Kubernetes集群组件如下:

在Centos7中安装和部署Kubernetes(k8s)集群的实现过程-主机频道

Kubernetes有两种类型的节点:主节点和工作节点。主节点也称为控制平面。控制平面中有许多组件,它们将为群集做出全局决策,例如资源调度。以及检测和响应集群事件,例如当不满足已部署副本字段时启动新的pod)。

控制平面组件可以在集群中的任何节点上运行。然而,为了简单起见,设置脚本通常在同一台计算机上启动所有控制平面组件,并且不在该计算机上运行用户容器。

3.2.1控制平面组件控制平面组件如下:

Kube-API服务器:API服务器是Kubernetes控制平面的一个组件,负责公开Kubernetes API和处理接受请求。API是Kubernetes控制平面的前端。Kubernetes API服务器的主要实现是kube-apiserver。Kube-apiserver的设计考虑了水平伸缩,即可以通过部署多个实例进行伸缩。您可以运行kube-apiserver的多个实例,并在这些实例之间平衡流量。Etcd:etcd是一个具有一致性和高可用性的键值对数据库,可以作为后台数据库存储Kubernetes的所有集群数据。Kubernetes集群的etcd数据库通常需要一个备份计划。kube -Scheduler:kube -Scheduler是控制平面的一个组件,负责监控新创建的没有指定运行节点的Pod,并为Pod选择运行的节点。调度中考虑的因素包括单个POD和Pod集的资源需求、软件和硬件以及策略约束、相似性和反相似性规范、数据位置、工作负载之间的干扰以及最终时限。kube -控制器-管理器:kube -控制器-管理器是控制平面的一个组件,负责运行控制器进程。从逻辑上讲,每个控制器都是一个独立的进程,但是为了降低复杂度,它们都被编译成同一个可执行文件,运行在同一个进程中。这些控制器包括:节点控制器;当一个网点发生故障时,负责通知和响应的一种作业控制器;监视代表一次性作业的作业对象,然后创建Pod来运行这些任务,直到端点控制器完成:填充端点对象(即加入服务和Pod)、服务帐户和令牌控制器(服务帐户和令牌控制器):为新的命名空间Cloud-Controllers -Manager创建默认帐户和API访问令牌:Kubernetes控制平面组件,具有特定于云平台的嵌入式控制逻辑。Cloud Controller Manager允许您将集群连接到云提供商的API,并将与云平台交互的组件与那些与集群交互的组件分开。Cloud-controller-manager只运行特定于云平台的控制器。因此,如果您在自己的环境或本地计算机的学习环境中运行Kubernetes,那么部署的集群不需要云控制器管理器。与kube-controller-manager类似,cloud-controller-manager将几个逻辑上独立的控制循环组合到同一个可执行文件中,供你在同一个进程中运行。您可以水平扩展它(运行多个副本)以提高性能或容错能力。以下控制器都包含对云平台驱动的依赖:节点控制器:路由控制器,用于在节点停止响应后检查云提供者,以确定节点是否被删除;服务控制器,用于在底层云基础设施中设置路由服务控制器;用于创建、更新和删除云提供商的负载平衡器。

3.2.2节点组件节点组件将在每个节点上运行,负责维护运行Pod,提供Kubernetes运行环境。

节点组件如下:

Kubelet:kubelet将在集群中的每个节点上运行。它确保所有容器都在Pod中运行。Kubelet接收通过各种机制提供给它的一组pod spec,以确保这些pod spec中描述的容器运行正常。Kubelet不管理不是由Kubernetes创建的容器。kube -代理:kube -代理是运行在集群中每个节点上的网络代理,它是Kubernetes服务概念的一部分。kube -代理在节点上维护一些网络规则,这将允许从集群内部或外部的网络会话与Pod进行网络通信。如果操作系统提供了可用的包过滤层,kube -代理将使用它来实现网络规则。否则kube -代理只转发流量。

四。Kubernetes集群的安装和部署

4.1环境介绍Kubernetes集群架构:k8scloude1为主节点,k8scloude2和k8scloude3为工作节点。

服务器操作系统版本CPU架构进程功能描述K8 SCLOUDE 1/192 . 168 . 110 . 130 CentOS Linux 7 . 4 . 1708(核心)x86 _ 64 Docker、kube-apiserver、etcd、kube-scheduler、Kube-controller-manager、kubelet、kube-proxy、coredns、calicok8s主节点k 8 sloude 2/192 . 168 . 110 . 129 CentOS Linux 7.4

4.2配置节点的基本环境。首先配置节点的基础环境,三个节点都要同时设置。这里以k8scloude1为例。

首先设置主机名。

直接在搜索框中搜索calico.yaml。

在Centos7中安装和部署Kubernetes(k8s)集群的实现过程-主机频道

找到下载calico.yaml的命令

在Centos7中安装和部署Kubernetes(k8s)集群的实现过程-主机频道

下载calico.yaml文件

使用calico.yaml文件

[root @ k 8 scloude 1 ~]# ku bectl apply -f calico.yamlconfigmap/calico-config unchangedcustomresourcedefinition.apiextensions.k8s.io/ bgpconfigurations.crd.projectcalico.org configuredcustomresourcedefinition.apiextensions.k8s.io/ bgppeers.crd.projectcalico.org configuredcustomresourcedefinition.apiextensions.k8s.io/ blockaffinities.crd.projectcalico.org configuredcustomresourcedefinition.apiextensions.k8s.io/ caliconodestatuses . CRD . project calico . org configuredcustomresourcedention . API extensions . k8s . io/cluster informations . CRD . project calico . org configuredcustomresourcedention . API extensions . k8s . io/Felix configurations . CRD . project calico . org configuredcustomresourcedention . API extensions . k8s . io/globalnetworkpolicies . CRD . project calico . org此时使用/v1 pod disruption budgetpodisruption Budget.policy/Calico-Kube-Controllers创建,发现三个节点都处于就绪状态。

[root @ k 8s cloud 1 ~]# ku bectl get nodes name状态角色年龄版本k 8s cloud 1 Ready control -plane,master 53m v 1 . 21 . 0k 8s cloud 2 Ready & amp;lt;无& ampgt;45m v1.21.0k8scloude3就绪& amplt;无& ampgt;45m v1.21.0

4.8配置kubectl命令tab键自动完成检查kubectl自动完成命令

[root @ k 8 sloude 1 ~]# ku ectl --help | grep bash completion输出指定shell (bash或zsh)的shell完成代码将source <(ku ectl completion bash)添加到/etc/profile并使配置生效。

[root @ k 8 scloude 1 ~]# cat/etc/profile | head -2 #/etc/profile source & amp;lt;(ku bectl completion bash)[root @ k 8 sloude 1 ~]# source/etc/profile这时ku ectl命令tab键自动完成。

[root @ k 8s cloud 1 ~]# ku bectl get nodes NAME STATUS ROLES AGE version k 8s cloud 1 Ready control -plane,master 59m v 1 . 21 . 0k 8s cloud 2 Ready & amp;lt;无& ampgt;51m v1.21.0k8scloude3就绪& amplt;无& ampgt;51m v1.21.0#注:Bash -completion -2.1-6.el 7 . no arch包是必须的,否则命令[root @ k 8 sloude 1 ~]# RP M-QA | grep Bash Bash -completion -2.1-6.el 7 . no arch Bash -4 . 2 . 46-30.el 7 . x86 _ 64 Bash -doc-4 . 2 . 47不能自动完成。

关于Centos7安装部署Kubernetes的更多信息,请关注主机频道zhujipindao中的其他相关文章。com!

未经允许不得转载:主机频道 » 在Centos7中安装和部署Kubernetes(k8s)集群的实现过程

评论 抢沙发

评论前必须登录!