基于Kubernetes v1.25.0和Docker部署高可用集群(说明篇)

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
可观测可视化 Grafana 版,10个用户账号 1个月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: docker与kubernetes的区别是:docker是管理当前主机上的容器,k8s是管理多台主机、跨平台的分布式管理系统。Kubernetes的设计初衷是支持可插拔架构,从而利于扩展kubernetes的功能

k8s.jpg


目录描述

  • Kubernetes组件说明
  • 特定接口CRI、CNI、CSI
  • Kubernetes v1.25集群创建方案选择

一、Kubernetes组件说明

Docker 的运行机制

运行机制详解:

  • docker client:命令行输入的docker命令就是一个docker客户端
  • docker Engine:Engine也就是引擎,client与Engine间有一定的连接接口
  • containterd:docker引擎去调用containterd,再去连接到containterd-shim(中间的一个切片/垫片类似),再去连接到runC,再去运行containter(也就起容器)
  • 其中containterd和runC组成了docker的运行环境,叫做容器运行时,以上是docker运行的基本框架

补充说明:docker与kubernetes的区别是:docker是管理当前主机上的容器,k8s是管理多台主机、跨平台的分布式管理系统。Kubernetes的设计初衷是支持可插拔架构,从而利于扩展kubernetes的功能。

kubernetes核心组件:

k8s master节点:提供控制功能,完成领导性的任务

  • kube-APIserver:相当于对外的总联络中心,对外提供一个总的接口,所以外部访问都要通过apiserver
  • etcd:数据库,存储相关的k8s资源
  • kub-Scheduler:计划调度器,把k8s的各种工作下发给具体来完成任务的node节点
  • kub-controller-Manager:控制器,网络控制器、卷控制器、服务控制器、node控制器等,来管理各种资源

k8s node节点:提供工作能力,来执行实际的工作任务

  • kubelet:作为连接master和node间的桥梁,接受来自master的下发任务,负责维护pod和容器的生命周期
  • kub-proxy:实现pod网络代理,是service的透明代理兼四层负载均衡功能,核心能力将service的访问请求转发到后端多个pod实例上

二、特定接口CRI、CNI、CSI

Kubernetes提供了三个特定功能的接口,kubernetes通过调用这几个接口,来完成相应的功能。

1. 容器运行时接口CRI: Container Runtime Interface

kubernetes 对于容器的解决方案,只是预留了容器接口,只要符合CRI标准的解决方案都可以使用。CRI容器运行时,早期和主流的是docker,后经生态发展,目前其他的也有多种了,比如containerd,dokcer不再是唯一选择

2. 容器网络接口CNI: Container Network Interface

kubernetes 对于网络的解决方案,只是预留了网络接口,只要符合CNI标准的解决方案都可以使用。CNI容器网络接口:通过跨网络与容器进行通信,依赖于网络插件实现能力,如Flannel、calico

3. 容器存储接口CSI: Container Storage Interface

kubernetes 对于存储的解决方案,只是预留了存储接口,只要符合CSI标准的解决方案都可以使用此接口非必须。应对不同的存储类型提供接口,让工作节点把数据在某个地方做持久化保存

补充说明:容器运行时接口(CRI),是kubernetes定义的一组gRPC服务。Kubelet作为客户端,基于gRPC协议通过Socket和容器运行时通信。CRI 是一个插件接口,它使 kubelet 能够使用各种容器运行时,无需重新编译集群组件。Kubernetes 集群中需要在每个节点上都有一个可以正常工作的容器运行时, 这样 kubelet 能启动 Pod 及其容器。容器运行时接口(CRI)是 kubelet 和容器运行时之间通信的主要协议。

CRI包括两类服务:镜像服务(Image Service)和运行时服务(Runtime Service)

  • 镜像服务提供下载、检查和删除镜像的远程程序调用
  • 运行时服务包含用于管理容器生命周期,以及与容器交互的调用的远程程序调用。

OCI(Open Container Initiative,开放容器计划)定义了创建容器的格式和运行时的开源行业标准,包 括镜像规范(Image Specification)和运行时规范(Runtime Specification)

市面上常用的容器引擎有很多,dockershim, containerd 和cri-o都是遵循CRI的容器运行时

补充说明:什么是容器运行时:如下

简单来说,就是一个程序运行的集合,程序运行都需要一套环境,例如Java要运行,就需要台Jvm,Jvm就提供了Java程序运行的环境;

所对应的还有“编译时”,和“运行时”不在一个阶段。比如某程序开发出来是源码,要将其编译成可以执行的二进制,这称为“编译时”;最终将二进制运行起来,这叫做“运行时”

三、Kubernetes v1.25集群创建方案选择

方式1: Docker

Docker使用的普及率较高,虽然Kubernetes-v1.24 默认情况下废弃了kubelet对于Docker的支持,但是我们还可以借助于Mirantis维护的cri-dockerd插件方式来实现Kubernetes集群的创建。

Docker Engine 没有实现 CRI, 而这是容器运行时在 Kubernetes 中工作所需要的。为此,必须安装一个额外的服务 cri-dockerd。 cri-dockerd 是一个基于传统的内置 Docker 引擎支持的项目, 它在 1.24 版本从 kubelet 中移除

项目站点: https://github.com/Mirantis/cri-dockerd

方式2: Containerd

默认情况下,Kubernetes在创建集群的时候,使用的就是Containerd 方式。

方式3: CRI-O

CRI-O的方式是Kubernetes创建容器最直接的一种方式,在创建集群的时候,需要借助于cri-o插件的方式来实现Kubernetes集群的创建。


最后~欢迎关注我! @Linux学习的那些事儿

我的个人资源整理,满满都是干货:可按需访问领取

200T免费资料,持续发布中...

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
9天前
|
Prometheus 监控 Cloud Native
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
130 79
|
11天前
|
消息中间件 数据可视化 Kafka
docker arm架构部署kafka要点
本内容介绍了基于 Docker 的容器化解决方案,包含以下部分: 1. **Docker 容器管理**:通过 Portainer 可视化管理工具实现对主节点和代理节点的统一管理。 2. **Kafka 可视化工具**:部署 Kafka-UI 以图形化方式监控和管理 Kafka 集群,支持动态配置功能, 3. **Kafka 安装与配置**:基于 Bitnami Kafka 镜像,提供完整的 Kafka 集群配置示例,涵盖 KRaft 模式、性能调优参数及数据持久化设置,适用于高可用生产环境。 以上方案适合 ARM64 架构,为用户提供了一站式的容器化管理和消息队列解决方案。
|
24天前
|
存储 Kubernetes 调度
Kubernetes、Docker和Containerd的关系解析
总的来说,Docker、Containerd和Kubernetes之间的关系可以用一个形象的比喻来描述:Docker就像是一辆装满货物的卡车,Containerd就像是卡车的引擎,而Kubernetes就像是调度中心,负责指挥卡车何时何地送货。
58 12
|
1月前
|
Ubuntu 安全 Docker
Ubuntu下部署及操作Docker技巧
以上就是在Ubuntu下部署及操作Docker的具体步骤。但这只是冰山一角,Docker的魅力远不仅如此。你可以将其视为存放各种工具的小箱子,随时随地取用,极大地提升工作效率。你也可以私人订制,适应不同的开发环境,就像一个拥有各种口味冰淇淋的冰箱,满足各种各样的需求。好了,现在你已经掌握了基本的Docker运用技巧,快去尝试使用吧!记住,沉浸在探索中,你会找到无尽的乐趣和满满的收获。
104 23
|
2月前
|
安全 API 算法框架/工具
大模型文件Docker镜像化部署技术详解
大模型文件Docker镜像化部署技术详解
272 2
|
1月前
|
存储 SQL 关系型数据库
docker部署n9e开源版本7.4.0
n9e开源版本7.4.0
68 0
|
缓存 Kubernetes 数据安全/隐私保护
k8s1.18多master节点高可用集群安装-超详细中文官方文档
k8s1.18多master节点高可用集群安装-超详细中文官方文档
|
Kubernetes 负载均衡 监控
Kubernetes高可用集群二进制部署(一)主机准备和负载均衡器安装
Kubernetes高可用集群二进制部署(一)主机准备和负载均衡器安装
|
Kubernetes Linux 网络安全
k8s1.18高可用集群安装-超详细中文官方文档
k8s1.18高可用集群安装-超详细中文官方文档
|
数据采集 弹性计算 Prometheus
Kubernetes-1.18.4二进制高可用安装(下)
Kubernetes-1.18.4二进制高可用安装(下)
123 0
Kubernetes-1.18.4二进制高可用安装(下)

相关产品

  • 容器服务Kubernetes版