第三章:使用 Minikube 创建集群

2024-04-01 21:36

本文主要是介绍第三章:使用 Minikube 创建集群,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用 Minikube 创建集群

目标

  • 了解 Kubernetes 集群。
  • 了解 Minikube。
  • 在你的电脑上开启一个 Kubernetes 集群。

Kubernetes 集群

Kubernetes 集群是由多个计算节点(Nodes)组成的集合,每个节点都运行着 Kubernetes 控制平面的一部分,以及容器化应用程序的工作负载。一个 Kubernetes 集群包含两种类型的资源:

  • 控制面调度整个集群

    控制面协调集群中的所有活动,例如调度应用、维护应用的所需状态、应用扩容以及推出新的更新。

  • 节点负责运行应用

    节点是一个虚拟机或者物理机,它在 Kubernetes 集群中充当工作机器的角色。 每个节点都有 Kubelet,它管理节点而且是节点与控制面通信的代理。 节点还应该具有用于处理容器操作的工具,例如 Docker 或 rkt。 处理生产级流量的 Kubernetes 集群至少应具有三个节点,因为如果一个节点出现故障其对应的 etcd 成员和控制面实例都会丢失, 并且冗余会受到影响。你可以通过添加更多控制面节点来降低这种风险。

Kubernetes 集群的核心组件:

  1. Master 节点:
    • kube-apiserver: 提供 Kubernetes API,允许用户和管理员与集群进行交互。
    • etcd: 一个分布式键值存储数据库,用于保存集群的配置信息和状态。
    • kube-scheduler: 负责将新创建的 Pod 分配给集群中的节点。
    • kube-controller-manager: 包含多个控制器,用于监控集群的状态并确保它们符合预期的状态。
  2. 工作节点(Node):
    • kubelet: 在节点上负责管理容器的生命周期,包括启动、停止和监视容器。
    • kube-proxy: 负责实现 Kubernetes 服务的网络代理和负载均衡。
    • 容器运行时(如 Docker、containerd 等): 负责运行容器。
  3. 网络插件(CNI): 负责为 Pod 和服务创建网络通信的网络插件,如 Calico、Flannel 等。
  4. 存储插件(CSI): 提供动态创建和管理持久化存储卷的能力,如 Rook、Ceph 等。

在 Kubernetes 上部署应用时,你告诉控制面启动应用容器。 控制面就编排容器在集群的节点上运行。 **节点使用控制面暴露的 Kubernetes API 与控制面通信。**终端用户也可以使用 Kubernetes API 与集群交互。

Kubernetes 既可以部署在物理机上也可以部署在虚拟机上。你可以使用 Minikube 开始部署 Kubernetes 集群。 Minikube 是一种轻量级的 Kubernetes 实现,可在本地计算机上创建 VM 并部署仅包含一个节点的简单集群。 Minikube 可用于 Linux、macOS 和 Windows 系统。Minikube CLI 提供了用于引导集群工作的多种操作, 包括启动、停止、查看状态和删除。

Minikube 安装

Minikube 是一个用于在本地开发环境中运行 Kubernetes(一个用于自动部署、扩展和管理容器化应用程序的开源容器编排工具)的工具。Minikube 允许开发者在个人计算机上创建一个单节点的 Kubernetes集群,用于测试和开发目的。

通过 Minikube,开发者可以在本地轻松地体验 Kubernetes 的基本功能,而无需设置一个完整的生产级别的多节点集群。Minikube 会在本地虚拟机中启动一个单节点的 Kubernetes 集群,这允许开发者在其个人计算机上创建、管理和测试容器化应用程序,以便更好地理解和熟悉 Kubernetes 的工作原理。

Minikube 支持多种虚拟化平台,如 VirtualBox、Hyper-V 和 KVM,因此用户可以选择适合其系统的虚拟化技术。它还提供了一些方便的命令行工具,用于启动、停止和管理本地 Kubernetes 环境。

需要以下条件才能使用 Minikube

  • 2个或更多的CPU
  • 2GB的可用内存
  • 20GB的可用磁盘空间
  • 互联网连接
  • 容器或虚拟机管理器,例如:Docker、QEMU、Hyperkit、Hyper-V、KVM、Parallels、Podman、VirtualBox或VMware Fusion/Workstation.
1、打开终端(命令行界面)
2、使用 curl 命令下载最新的 Minikube 二进制文件

在终端中运行以下命令:

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
3、将下载的二进制文件移动到一个可执行路径,例如 /usr/local/bin/

运行以下命令:

sudo install minikube-linux-amd64 /usr/local/bin/minikube

如果提示密码,请输入你的管理员密码。

4、验证 Minikube 是否成功安装

运行以下命令:

minikube version

这应该输出 Minikube 的版本信息,确认安装成功。

5、启动 Minikube 集群
  1. 默认启动

    minikube start   
    
  2. 指定 kubernetes版本启动

    启动指定版本 Kubernetes 的示例命令:

    minikube start --kubernetes-version=<desired_version>
    

    请将 `` 替换为你想要使用的 Kubernetes 版本。例如,如果你想要使用 Kubernetes 版本 1.20.0,你可以运行以下命令:

    sqlCopy codeminikube start --kubernetes-version=v1.20.0 --force --driver=docker 
    

    Minikube 将下载和启动指定版本的 Kubernetes,并为你提供一个本地的单节点 Kubernetes 集群。

  3. 指定镜像源

    minikube start  --force --driver=docker --image-mirror-country='cn'  --image-repository=registry.cn-hangzhou.aliyuncs.com 
    

启动过程如下:

* Centos 7.7.1908 上的 minikube v1.32.0
! 当提供 --force 参数时,minikube 将跳过各种验证,这可能会导致意外行为
* 根据用户配置使用 docker 驱动程序
* The "docker" driver should not be used with root privileges. If you wish to continue as root, use --force.
* 如果您在VM中运行 minikube,请考虑使用 --driver=none:
*   https://minikube.sigs.k8s.io/docs/reference/drivers/none/
* 正在使用镜像存储库 registry.cn-hangzhou.aliyuncs.com
* 使用具有 root 权限的 Docker 驱动程序
* 正在集群 minikube 中启动控制平面节点 minikube
* 正在拉取基础镜像 ...
! The image 'registry.cn-hangzhou.aliyuncs.com/coredns/coredns:v1.10.1' was not found; unable to add it to cache.
! The image 'registry.cn-hangzhou.aliyuncs.com/etcd:3.5.9-0' was not found; unable to add it to cache.
! The image 'registry.cn-hangzhou.aliyuncs.com/k8s-minikube/storage-provisioner:v5' was not found; unable to add it to cache.
! The image 'registry.cn-hangzhou.aliyuncs.com/kube-proxy:v1.28.3' was not found; unable to add it to cache.
! The image 'registry.cn-hangzhou.aliyuncs.com/kube-scheduler:v1.28.3' was not found; unable to add it to cache.
! The image 'registry.cn-hangzhou.aliyuncs.com/pause:3.9' was not found; unable to add it to cache.
! The image 'registry.cn-hangzhou.aliyuncs.com/kube-controller-manager:v1.28.3' was not found; unable to add it to cache.
! The image 'registry.cn-hangzhou.aliyuncs.com/kube-apiserver:v1.28.3' was not found; unable to add it to cache.

这将下载所需的镜像并启动本地 Kubernetes 集群。

提示:【VM虚拟机root启动】

这篇关于第三章:使用 Minikube 创建集群的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/868190

相关文章

Conda与Python venv虚拟环境的区别与使用方法详解

《Conda与Pythonvenv虚拟环境的区别与使用方法详解》随着Python社区的成长,虚拟环境的概念和技术也在不断发展,:本文主要介绍Conda与Pythonvenv虚拟环境的区别与使用... 目录前言一、Conda 与 python venv 的核心区别1. Conda 的特点2. Python v

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

C#中Guid类使用小结

《C#中Guid类使用小结》本文主要介绍了C#中Guid类用于生成和操作128位的唯一标识符,用于数据库主键及分布式系统,支持通过NewGuid、Parse等方法生成,感兴趣的可以了解一下... 目录前言一、什么是 Guid二、生成 Guid1. 使用 Guid.NewGuid() 方法2. 从字符串创建

Python使用python-can实现合并BLF文件

《Python使用python-can实现合并BLF文件》python-can库是Python生态中专注于CAN总线通信与数据处理的强大工具,本文将使用python-can为BLF文件合并提供高效灵活... 目录一、python-can 库:CAN 数据处理的利器二、BLF 文件合并核心代码解析1. 基础合

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四