Linux云计算 |【第五阶段】CLOUD-DAY6

主要内容:

了解Kubernetes的架构、搭建Kubernetes集群

一、Kubernetes 概述

Kubernetes 这个名字来自希腊语,意思是“舵手”或“领航员”;K8S 是 Kubernetes 的缩写,其中“8”代表字母“ubernete”中的8个字母。Kubernetes 是由谷歌(Google)公司制作的,是谷歌10多年大规模容器管理技术 Borg 的开源版本。于2014年6月由谷歌公司正式发布并宣布开源。

功能与特点:

  1. 容器集群管理系统:Kubernetes 是一个开源的平台,用于管理容器集群
  2. 自动化部署:Kubernetes 可以实现容器集群的自动化部署
  3. 自动扩缩容:Kubernetes 支持根据需求自动扩展或缩减容器集群的规模
  4. 维护功能:Kubernetes 提供维护功能,确保容器集群的稳定运行

1. 自动化部署

  • 描述:Kubernetes 可以自动部署应用程序和服务到容器集群中,减少手动操作的复杂性和错误
  • 优势:提高部署效率,减少人为错误,确保一致性和可重复性

2. 自动扩缩容

  • 描述:Kubernetes 可以根据应用程序的负载情况自动扩展或缩减容器集群的规模
  • 优势:优化资源利用率,降低成本,确保应用程序在高负载下仍能稳定运行

3. 维护功能

  • 描述:Kubernetes 提供维护功能,包括自动修复、滚动更新、回滚等,确保容器集群的稳定运行
  • 优势:减少停机时间,提高系统的可靠性和可用性

1、Kubernetes (K8S) 集群解析

Kubernetes (K8S) 集群是一个由多个节点组成的系统,用于管理和运行容器化应用程序。Kubernetes 集群的核心组件包括控制平面(Control Plane)工作节点(Worker Nodes)

核心角色:

  • - Master(管理节点、控制平面)
  • - Node(计算节点、工作节点)
  • - image(镜像仓库)

1)控制平面(Control Plane)

控制平面是 Kubernetes 集群的大脑,负责管理和控制整个集群的状态,对集群进行全局决策,检测和响应集群事件;主要由 API Server、Scheduler、Etcd和Controller manager 组件组成。

① API Server

  • 功能:提供 Kubernetes API,是集群的入口点,负责处理所有 API 请求
  • 特点:支持 RESTful API,用于与集群进行交互
  • 备注:整个系统的对外接口,提供客户端和其它组件调用,后端运行的所有元数据都会存储于etcd中(键值数据库)

② etcd

  • 功能:分布式键值存储,用于存储集群的所有配置数据和状态信息
  • 特点:高可用性和一致性,确保集群状态的可靠存储
  • 备注:由kubernetes集群自动管理,用户无需手动干预,etcdctl是etcd的客户端管理程序

③ Scheduler

  • 功能:负责将 Pod(Kubernetes 的最小调度单元)调度到合适的节点上运行
  • 特点:根据资源需求、节点状态和策略进行智能调度
  • 备注:负责对集群内部的资源进行调度,负责分配容器运行地址

④ Controller Manager

  • 功能:运行各种控制器进程,负责维护集群的状态,如副本控制器、节点控制器等
  • 特点:确保集群的实际状态与期望状态一致

⑤ Cloud Controller Manager

  • 功能:与云服务提供商的 API 交互,管理云资源,如负载均衡器、存储卷等
  • 特点:特定于云环境的控制器,提供云资源的集成管理

Master相关组件接口:

2)工作节点(Worker Nodes)

工作节点是 Kubernetes 集群中实际运行容器化应用程序的节点,负责维护运行Pod,并提供具体应用的运行环境;每个工作节点包含以下核心组件:

① Kubelet:

  • 功能:负责管理节点上的容器,与控制平面通信,确保容器按照 Pod 规范运行
  • 特点:节点上的代理,负责执行控制平面的指令
  • 备注:用来启动、监视pod及调用Docker去对容器进行操作,包括增删改等操作

② Kube-proxy:

  • 功能:负责维护节点上的网络规则,实现服务发现和负载均衡
  • 特点:确保 Pod 之间的网络通信和服务的可达性
  • 备注:为Pod对象提供代理,并实现kubernetes Service的通信与负载均衡机制

③ 容器运行时(Container Runtime):

  • 功能:负责运行容器,如 Docker、containerd、CRI-O 等
  • 特点:支持多种容器运行时,提供容器生命周期管理

2、kube-proxy 代理模式解析

kube-proxy 是 Kubernetes 集群中负责网络代理和负载均衡的关键组件。它确保集群内部和外部的网络流量能够正确地路由到相应的 Pod。kube-proxy 支持多种代理模式,每种模式都有其特定的实现方式和适用场景。以下是对 kube-proxy 代理模式的详细解析:

1)用户空间代理模式(User Space Proxy Mode)

版本:Kubernetes v1.0

实现方式:kube-proxy 在用户空间运行,通过切换不同的用户空间来实现对应用的访问。

特点:

  • 简单:实现简单,易于理解和调试。
  • 性能较低:由于在用户空间和内核空间之间频繁切换,性能较低。
  • 适用场景:早期版本中使用,适用于小型集群或测试环境。

2)iptables 模式代理(iptables Proxy Mode)

版本:Kubernetes v1.1

实现方式:kube-proxy 使用 iptables 规则来实现网络流量的转发和映射。

特点:

  • 性能较高:直接在内核空间操作,性能优于用户空间代理模式。
  • 复杂性:iptables 规则复杂,管理和维护难度较大。
  • 适用场景:适用于大多数生产环境,特别是需要高性能和稳定性的场景。

3)IPVS 代理模式(IPVS Proxy Mode)

版本:Kubernetes v1.8

实现方式:kube-proxy 使用 IPVS(IP Virtual Server)来实现负载均衡。IPVS 是 Linux 内核的一部分,提供高性能的负载均衡功能。

特点:

  • 高性能:IPVS 在内核空间实现负载均衡,性能非常高。
  • 可扩展性:支持多种负载均衡算法(如轮询、加权轮询、最小连接等)。
  • 复杂性:需要满足一定的内核和软件包要求。
  • 适用场景:适用于大规模集群,特别是需要高性能负载均衡的场景。

启用 IPVS 模式的条件

① 内核支持,内核必须支持以下模块:

  • ip_vs:IPVS 核心模块。
  • ip_vs_rr:轮询调度算法。
  • ip_vs_wrr:加权轮询调度算法。
  • ip_vs_sh:源地址哈希调度算法。
  • nf_conntrack_ipv4:连接跟踪模块。

② 软件包支持,必须安装以下软件包:

  • ipvsadm:IPVS 管理工具。
  • ipset:用于管理 IP 集合的工具。

③ 配置文件中开启 IPVS 参数,在 kube-proxy 的配置文件中开启 IPVS 参数,例如:

mode: ipvs

3、Pod 的详细解析

在 Kubernetes 中,Pod 是调度的基本单元,也是最小的部署和管理单元。Pod 的设计理念是将一组紧密关联的容器打包在一起,共享相同的网络命名空间和存储卷。以下是对 Pod 的详细解析:

1)Pod 的基本概念

调度的基本单元

Pod 是 Kubernetes 调度的基本单元,Kubernetes 通过调度 Pod 来管理容器的运行;

容器组

一个 Pod 可以包含一个或多个容器,这些容器共享相同的网络命名空间和存储卷;

网络命名空间

Pod 中的所有容器共享相同的 IP 地址和端口号,容器之间可以通过 localhost 进行通信;

存储卷

Pod 中的容器可以共享存储卷,实现数据的共享和持久化;

2)Pod 的特点

  • 独立部署单元:Pod 是一个独立的部署单元,支持横向扩展和复制。通过复制 Pod,可以实现应用的高可用性和负载均衡。
  • 多进程聚合:Pod 可以看作是一个服务的多个进程的聚合单位。例如,一个 Pod 可以包含一个主应用容器和一个辅助容器(如日志收集器)。
  • 生命周期管理:Pod 的生命周期由 Kubernetes 管理,支持自动重启、扩缩容等。
  • 资源隔离:Pod 中的容器在同一节点上运行,但资源隔离由容器运行时管理。

3)Pod 的管理

在 Kubernetes 中,用户无法单独管理某一个容器。管理容器的时候是以 Pod 为单位,必须先创建 Pod,才能够去创建容器。每个容器都在 Pod 中,没有不在 Pod 的容器。Pod 是容器运行的最小环境。

4)Pod 的创建和使用

① 创建 Pod:

通过定义 YAML 或 JSON 格式的 Pod 配置文件,可以创建 Pod。配置文件中指定 Pod 的名称、容器镜像、端口、存储卷等信息。

② 管理 Pod:

Kubernetes 提供了丰富的命令和 API 来管理 Pod,如 kubectl create、kubectl get、kubectl delete 等。

③ Pod 的扩展:

通过复制 Pod,可以实现应用的横向扩展。Kubernetes 的副本控制器(ReplicaSet 或 Deployment)负责管理 Pod 的副本数量。

二、kubernetes 集群安装部署

1)安装部署方式:

  1. 源码部署:下载源码或编译好的二进制,手工添加参数启动服务,Kubernetes采用证书认证方式,需要创建大量证书;
  2. 容器部署:官方把服务做成“镜像”,下载镜像、启动即可;

官方特意根据容器部署方式,制作kubeadm工具,为用户提高下载良好体验度(推荐)

官网地址:Kubernetes

2)部署环境要求:

  • ① 内核版本:>= 3.10
  • ② 最低配置:2CPU、2G内存
  • ③ 节点之中不可以有重复的主机名、MAC地址或product_uuid
  • ④ 卸载防火墙、禁用Swap交换分区、禁用SELinux;

安装部署示例:

环境准备:实验集群规划,需购买5台云主机

主机名

IP地址

最低配置

集群角色

master

192.168.1.21

2CPU,4G内存

管理节点

node-0001

192.168.1.31

2CPU,4G内存

计算节点

node-0002

192.168.1.32

2CPU,4G内存

node-0003

192.168.1.33

2CPU,4G内存

registry

192.168.1.100

1CPU,1G内存

私有镜像仓库

步骤1:私有镜像仓库初始化(registry操作192.168.1.100)

① 安装仓库软件并启动服务

[root@registry ~]# yum makecache
[root@registry ~]# yum install -y docker-distribution    //安装私有镜像仓库软件
[root@registry ~]# systemctl enable --now docker-distribution  //开启镜像仓库服务

② 使用脚本初始化仓库(init-img.sh)

# 拷贝云盘kubernetes/v1.17.6/registry/myos目录的部署脚本和镜像压缩包到仓库服务器

[root@ecs-proxy ~]# scp /root/kubernetes/v1.17.6/registry/myos/* 192.168.1.100:/root/
[root@registry ~]# mkdir myos    //创建存放目录
[root@registry ~]# c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小安运维日记

Hey~ 感谢您的充电支持!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值