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

文章目录

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

简介

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

安装 Minikube

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

启动 Minikube 集群

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

bash 复制代码
minikube start

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

bash 复制代码
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

yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
  - name: nginx-container
    image: nginx:latest

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

bash 复制代码
kubectl apply -f example-pod.yaml

2. 创建 Deployment

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

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:

bash 复制代码
kubectl apply -f example-deployment.yaml

3. 创建 Service

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

yaml 复制代码
apiVersion: v1
kind: Service
metadata:
  name: example-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: ClusterIP

通过以下命令创建 Service:

bash 复制代码
kubectl apply -f example-service.yaml

监视和调试

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

1. 查看集群状态

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

bash 复制代码
minikube status

2. 查看集群信息

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

bash 复制代码
minikube info

3. 访问 Kubernetes Dashboard

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

bash 复制代码
minikube dashboard

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

4. 使用 kubectl 命令

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

bash 复制代码
kubectl get pods

或者查看 Deployment:

bash 复制代码
kubectl get deployments

清理资源

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

1. 删除 Pod

通过以下命令删除 Pod:

bash 复制代码
kubectl delete pod example-pod

2. 删除 Deployment

通过以下命令删除 Deployment:

bash 复制代码
kubectl delete deployment example-deployment

3. 删除 Service

通过以下命令删除 Service:

bash 复制代码
kubectl delete service example-service

4. 停止 Minikube 集群

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

bash 复制代码
minikube stop

进阶用法

1. 使用本地 Docker 镜像

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

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

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

2. 使用 Helm 管理应用

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

  1. 安装 Helm:

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

    bash 复制代码
    helm repo add stable https://charts.helm.sh/stable
  3. 安装 Nginx Chart:

    bash 复制代码
    helm install nginx-demo stable/nginx-ingress

3. 使用 Persistent Volumes

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

yaml 复制代码
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mypvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

总结

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

相关推荐
yannan201903132 小时前
Docker容器
运维·docker·容器
小宁爱Python2 小时前
Windows Docker Desktop占用C盘空间过大解决办法集合
运维·docker·容器
JAVA学习通3 小时前
发布自己的 jar 包到 Maven 中央仓库 ( mvnrepository.com )
人工智能·docker·自然语言处理·容器·rocketmq
Cloud孙文波3 小时前
探索Apache APISIX:动态高性能API网关
云原生·kubernetes·apisix
木亦汐丫6 小时前
Docker 镜像版本Alpine、Slim、Bookworm、Bullseye、Stretch、Jessie
运维·docker·容器·debian·alpine·slim·bullseye
中草药z8 小时前
【Docker】零基础上手:原理+Ubuntu/Windows GUI 安装 + 镜像源 / 目录优化
运维·ubuntu·docker·容器·gui·安装·cgroups
勇往直前plus8 小时前
如何利用docker部署springboot应用
spring boot·docker·容器
小北爱编程ma9 小时前
【云原生】用Prometheus Operator监听Golang服务指标,并用Granafa可视化展示
云原生
NineData10 小时前
NineData云原生智能数据管理平台新功能发布|2025年9月版
数据库·云原生·devops·ninedata·数据库迁移·数据复制·风险sql管控
博睿谷IT99_11 小时前
Linux 云计算核心技术:原理、组件与 K8s 实战部署
linux·kubernetes·云计算