K8S学习指南(4)-minikube的使用

文章目录

    • 简介
    • 安装 Minikube
    • 启动 Minikube 集群
    • 基本概念
    • 创建和管理资源
      • 1. 创建 Pod
      • 2. 创建 Deployment
      • 3. 创建 Service
    • 监视和调试
      • 1. 查看集群状态
      • 2. 查看集群信息
      • 3. 访问 Kubernetes Dashboard
      • 4. 使用 kubectl 命令
    • 清理资源
      • 1. 删除 Pod
      • 2. 删除 Deployment
      • 3. 删除 Service
      • 4. 停止 Minikube 集群
    • 进阶用法
      • 1. 使用本地 Docker 镜像
      • 2. 使用 Helm 管理应用
      • 3. 使用 Persistent Volumes
    • 总结

简介

Minikube 是一个用于在本地开发环境中运行 Kubernetes 集群的工具。本文将深入介绍 Minikube 的各项功能和用法,以帮助开发人员更好地利用它进行容器化应用的开发、测试和学习。

安装 Minikube

如果你尚未安装 Minikube,请参考前文的Minikube 安装指南进行安装。

启动 Minikube 集群

在安装完成 Minikube 后,我们可以通过以下命令启动 Minikube 集群:

minikube start

该命令将启动一个单节点的 Kubernetes 集群,并使用默认的虚拟机驱动。你还可以通过 --driver 选项指定其他虚拟机驱动,比如 VirtualBox 或 KVM。

minikube start --driver=virtualbox

在启动过程中,Minikube 会下载所需的镜像和组件,并配置 Kubernetes 集群。

基本概念

在开始深入使用 Minikube 之前,让我们回顾一下一些基本的 Kubernetes 概念。

  • Pods(Pod): 是 Kubernetes 最小的可部署单元,通常包含一个容器。Pods 是应用程序的实例,共享相同的网络命名空间和存储卷。
  • Deployments(部署): 用于定义和管理 Pod 的副本数和更新策略。Deployments 使得应用程序的扩展和更新变得更加容易。
  • Services(服务): 提供了一个稳定的网络端点,以便与 Pod 交互。Services 可以通过选择器与一组 Pod 关联,形成一个虚拟服务。
  • ConfigMaps 和 Secrets: 用于存储应用程序的配置信息和敏感数据。ConfigMaps 用于非敏感数据,而 Secrets 用于敏感数据,如密码和 API 密钥。

创建和管理资源

1. 创建 Pod

通过定义一个 Pod 的 YAML 文件,我们可以轻松创建一个简单的 Pod。以下是一个示例 Pod YAML 文件,命名为 example-pod.yaml

apiVersion: v1
kind: Pod
metadata:name: example-pod
spec:containers:- name: nginx-containerimage: nginx:latest

然后,通过以下命令创建 Pod:

kubectl apply -f example-pod.yaml

2. 创建 Deployment

创建 Deployment 以便更好地管理 Pod 的副本数和更新。以下是一个简单的 Deployment YAML 文件,命名为 example-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: example-deployment
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginx-containerimage: nginx:latest

通过以下命令创建 Deployment:

kubectl apply -f example-deployment.yaml

3. 创建 Service

为了将应用程序公开给其他 Pod 或外部流量,我们可以创建一个 Service。以下是一个简单的 Service YAML 文件,命名为 example-service.yaml

apiVersion: v1
kind: Service
metadata:name: example-service
spec:selector:app: nginxports:- protocol: TCPport: 80targetPort: 80type: ClusterIP

通过以下命令创建 Service:

kubectl apply -f example-service.yaml

监视和调试

Minikube 提供了一些方便的命令和工具,帮助你监视和调试 Kubernetes 集群。

1. 查看集群状态

可以使用以下命令查看 Minikube 集群的状态:

minikube status

2. 查看集群信息

通过以下命令可以查看 Minikube 集群的详细信息:

minikube info

3. 访问 Kubernetes Dashboard

Minikube 集群提供了 Kubernetes Dashboard,通过以下命令可以访问:

minikube dashboard

然后,可以在浏览器中打开 http://127.0.0.1:8001/ 来查看 Dashboard。

4. 使用 kubectl 命令

可以使用 kubectl 命令与 Minikube 集群交互。例如,通过以下命令获取所有 Pods:

kubectl get pods

或者查看 Deployment:

kubectl get deployments

清理资源

在完成开发和测试后,为了释放资源,我们可以清理 Minikube 集群中的资源。

1. 删除 Pod

通过以下命令删除 Pod:

kubectl delete pod example-pod

2. 删除 Deployment

通过以下命令删除 Deployment:

kubectl delete deployment example-deployment

3. 删除 Service

通过以下命令删除 Service:

kubectl delete service example-service

4. 停止 Minikube 集群

最后,通过以下命令停止 Minikube 集群:

minikube stop

进阶用法

1. 使用本地 Docker 镜像

如果你已经在本地构建了 Docker 镜像,并想在 Minikube 中使用它,可以通过以下步骤实现:

  1. 设置 Minikube 使用本地 Docker 镜像:

    eval $(minikube docker-env)
    
  2. 使用 docker build 构建你的镜像,并在 Pod 或 Deployment 中引用该镜像。

2. 使用 Helm 管理应用

Helm 是 Kubernetes 的包管理工具,可以简化应用的部署和管理。以下是使用 Helm 部署一个 Nginx 应用的步骤:

  1. 安装 Helm:

    curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
    
  2. 添加 Helm 仓库:

    helm repo add stable https://charts.helm.sh/stable
    
  3. 安装 Nginx Chart:

    helm install nginx-demo stable/nginx-ingress
    

3. 使用 Persistent Volumes

在 Minikube 中,你可以使用 Persistent Volumes(PV)和 Persistent Volume Claims(PVC)来实现数据的持久化存储。以下是一个简单的 PVC 示例:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: mypvc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 1Gi

总结

通过本文,你已经学会了如何使用 Minikube 在本地搭建和管理 Kubernetes 集群,以及一些基本的资源创建、监视和调试技巧。同时,你还了解了一些进阶用法,如使用本地 Docker 镜像、使用 Helm 进行应用管理和使用 Persistent Volumes 实现数据持久化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/211768.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

! [remote rejected] master -> master (pre-receive hook declined)

! [remote rejected] master -> master (pre-receive hook declined) 如图: 出错解决方法 首先输入命令 git branch xindefenzhi然后,进入这个新创建的分支 git checkout branch然后重新git push就可以了

爬虫学习-基础库的使用(urllib库)

目录 一、urllib库介绍 二、request模块使用 (1)urlopen ①data参数 ②timeout参数 (2)request (3)高级用法 ①验证 ②代理 ③Cookie 三、处理异常 ①URLError ②HTTPError 四、解析链接 ①urlparse ②…

LeetCode-10. 正则表达式匹配

LeetCode-10. 正则表达式匹配 问题分析算法描述程序代码CGo 问题分析 这道题的难点主要在于*号的匹配,这里记dp[i][j]表示s[1...i]和p[1...j]能否完成匹配,先根据特殊情况归纳总结: *号匹配 0 次,则dp[i][j] dp[i][j-2]*号匹配…

Mybatis源码解析4:获取Session、Mapper

Mybatis源码解析4:获取Session、Mapper 1.项目结构2. 源码分析2.1 获取Session DefaultSqlSessionFactory#openSession2.2 获取Mapper DefaultSqlSession#getMapper 1.项目结构 2. 源码分析 2.1 获取Session DefaultSqlSessionFactory#openSession private SqlSe…

利用人工智能算法解决内存垃圾回收问题

内存垃圾回收是计算机领域中的一个重要问题,可以利用人工智能算法解决此问题。常用的人工智能算法包括遗传算法、模拟退火算法、禁忌搜索算法等。 其中,遗传算法是一种基于自然选择和遗传进化的算法,可以用于优化问题。在内存垃圾回收中&…

Python实战演练之Python实现一个简单的天气查询应用

今天,晓白给大家分享Python实现一个简单的天气查询应用,帮助大家获取实时的天气信息,内容仅供学习交流。 首先,我们需要安装一个名为"requests"的Python库,它可以帮助我们发送HTTP请求并获取响应数据。你可…

Kernel(一):基础

本文主要讨论210的kernel基础相关知识。 内核驱动 驱动是内核中的硬件设备管理模块,工作在内核态,程序故障可能导致内核崩溃,程序漏洞会使内核不安全 根文件系统提供根目录,进程存放在根文件系统中,内核启动最后会装载根文件系统 应用程序不属于内核,…

1828_ChibiOS中的对象FIFO

全部学习汇总: GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com) 1. 最初的这个理解,当看到后面之后就知道有点偏差了。其实,这个传输就是一个单纯的FIFO而不是两个FIFO之间的什么操作。 2.…

去掉参数中第一个“,”

记录一下,前端传参中,传给我参数是“categoryIds: ,1731557494586241026,1731569816263311362,1731569855534579713,1731858335179223042,1731858366821052418” 但是后端,因为我的mybati是in查询,所以因为第一个是“,”。所以会导…

RabbitMQ安装在Linux系统详细教程

安装教程: 1.首先将下载好的文件上传到服务器,拉到opt文件夹中(可以用xftp) 2.输入命令: cd /opt 3.安装erlang rpm -ivh erlang-23.3.4.11-1.el7.x86_64.rpm rpm -ivh(复制配置文件的名字) 4.在Rab…

sap增强

四代增强 2种显示增强1种隐式增强 隐式增强 光标放在增强点或其中的代码点击修改即可修改代码 显示增强 1.ENHANCEMENT-POINT 在代码修改界面选择空行 光标所在位置 可以创建多个增强实施且激活后都会执行. 2.ENHANCEMENT-SECTION 1,选中程序中空行 2.编辑->创建选项 …

回顾2023 亚马逊云科技 re_Invent,创新AI,一路同行

作为全球云计算龙头企业的亚马逊云科技于2023年11月27日至12月1日在美国拉斯维加斯举办了2023 亚马逊云科技 re:Invent,从2012年开始举办的亚马逊云科技 re:Invent 全球大会,到现如今2023 亚马逊云科技 re:Invent,回顾历届re:Invent大会,亚马…

Spring 动态代理时是如何解决循环依赖的?为什么要使用三级缓存?

首先,我将简单介绍一下Spring框架中的动态代理和循环依赖问题。 动态代理与循环依赖 1. 动态代理 在Spring框架中,动态代理是一种常用的技术,用于实现AOP(面向切面编程)。动态代理允许Spring在运行时为目标对象创建…

C++『异常』

✨个人主页: 北 海 🎉所属专栏: C修行之路 🎃操作环境: Visual Studio 2022 版本 17.6.5 文章目录 🌇前言🏙️正文1.异常基本概念1.1.C语言异常处理方式1.2.C异常处理方式 2.异常的使用2.1.异常…

在线网页生成工具GrapesJS

项目地址 https://github.com/GrapesJS/grapesjshttps://github.com/GrapesJS/grapesjs 项目简述 这是一个基于node.js的在线网页生成项目,对简化开发有很大的帮助。 主要使用的语言如下: 编辑页面如下: 使用也很简洁 具体可以看下项目。…

使用c++编程语言,将字符串中的数字全部替换成字符串:number

给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。 样例输入:a1b2c3 样例输出:anumberbnumbercnumber 代码如下: #incl…

12. MySQL 锁机制

目录 概述 MylSAM引擎 InnoDB引擎 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制(避免争抢)。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资如何保证数据…

Pytest中使用Fixture替换Unittest的Setupclass及Pytest使用装饰器应用参数化

1 类里使用Fixture Pytest中夹具(Fixture)有几种生命周期:function->model->class->session->packages,其中默认为function。 import pytest from Common.logger import Log from Common.Operator import * fro…

C#中的Attributes特性创建和结合反射应用举例

C#中的特性入门学习 Attributes官方介绍概述 Attributes provide a powerful method of associating metadata, or declarative information, with code (assemblies, types, methods, properties, and so forth). After an attribute is associated with a program entity, …

深入理解Vue.js中的this:解析this关键字及其使用场景

在Vue.js中,this 和 that 可能是指向不同对象的两个变量,或者是在代码中使用时的错误。 this: 在Vue组件中,this 指向当前组件的实例。可以通过 this 访问组件的属性和方法。 例如,在Vue组件的 data 属性中定义了一…