第三章:使用 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

相关文章

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

MyBatis ParameterHandler的具体使用

《MyBatisParameterHandler的具体使用》本文主要介绍了MyBatisParameterHandler的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、概述二、源码1 关键属性2.setParameters3.TypeHandler1.TypeHa

Spring 中的切面与事务结合使用完整示例

《Spring中的切面与事务结合使用完整示例》本文给大家介绍Spring中的切面与事务结合使用完整示例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录 一、前置知识:Spring AOP 与 事务的关系 事务本质上就是一个“切面”二、核心组件三、完