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

news/2024/6/3 18:18:47 标签: kubernetes, 容器, 云原生

文章目录

    • 简介
    • 安装 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-container
    image: 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: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx-container
        image: 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: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: 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:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

总结

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


http://www.niftyadmin.cn/n/5250070.html

相关文章

大三上实训内容

项目一:爬取天气预报数据 【内容】 在中国天气网(http://www.weather.com.cn)中输入城市的名称,例如输入信阳,进入http://www.weather.com.cn/weather1d/101180601.shtml#input 的网页显示信阳的天气预报,其中101180601是信阳的…

迅为3588开发板 sudo: 无法解析主机:/DNS配置

环境申明 RK3588 ubuntu 22.04 jammy 迅为开发板 hostname 看是否有Host .,如果没有, sudo vim /etc/hostname在里面加一行,我这就这一个 iTOP-RK3588hosts 修改本地hosts sudo vim /etc/hosts127.0.0.1 localhost localhost iTOP-RK3…

K近邻算法 K近邻算法原理

K近邻算法 K近邻算法原理 k k k近邻算法介绍 k k k近邻法 (k-Nearest Neighbor;kNN) 是一种比较成熟也是最简单的机器学习算法,可以用于基本的分类与回归方法算法的主要思路:如果一个样本在特征空间中与k个实例最为相似(即特征空间中最邻近),…

LINQ【C#】

1LINQ概述: 集成查询,在对象领域和数据领域之间架起了一座桥梁。 LINQ主要由3部分组成:LINQ to ADO.NET、LINQ to Objects和LINQ to XML。其中,LINQ to ADO.NET可以分为两部分:LINQ to SQL 和LINQ to DataSet。 var…

ubuntu 如何修改主机名称

UBUNTU 2018.04 LTS 64位 修改当前电脑的主机名称。 操作步骤如下: 假设你的主机名为AAAAA , 打算修改为BBBBB。开机进入桌面。 打开一个终端。命令行下,使用vi /etc/hostname指令,编辑主机名称。将hostname文件里的AAAAA改为BB…

CTF刷题记录

刷题 我的md5脏了KFC疯狂星期四坤坤的csgo邀请simplePHPcurl 我的md5脏了 g0at无意间发现了被打乱的flag:I{i?8Sms??Cd_1?T51??F_1?} 但是好像缺了不少东西,flag的md5值已经通过py交易得到了:88875458bdd87af5dd2e3c750e534741 flag…

LeeCode每日刷题12.8

搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: …

vite配置nework访问ip

如果没有进行配置,运行项目之后,看到的访问地址是本地访问地址,其他人同个局域网的人访问不了。 如下: 如果想要其他人也可以访问,需要设置内网 ip 访问地址,设置方法如下: 一、配置 “ vite…