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 实现数据持久化。

相关推荐
时间售卖铺30 分钟前
MySQL 日志管理
运维·数据库·mysql·云原生
老郭a1 小时前
流量一涨 Pod 扩不出来?K8s HPA 弹性伸缩配置避坑指南
云原生
程序员清风1 小时前
LibreChat 实战:用 Docker 搭建可扩展的多模型对话平台
运维·docker·容器
Web3&Basketball2 小时前
从0到1落地AI Agent沙箱隔离Docker实战:踩坑全记录
运维·docker·容器·agent·容器安全·沙箱隔离
xianyuCcCcCCCcc2 小时前
Kubernetes Service 与网络代理
网络·云原生·kubernetes
bluebonnet273 小时前
【docker】使用regctl免安装docker下载镜像
运维·docker·容器
我不会起名字3223 小时前
PV/PVC 一直 Pending:StorageClass 与绑定条件的 4 个检查点
云原生·kubernetes·pvc·排查
孔令飞17 小时前
工具分享:OneX AI 工具安装、配置及功能介绍
云原生·go·ai编程
程序猿阿越19 小时前
从 StatefulSet 到容器挂载:CSI 源码走读
后端·kubernetes·源码阅读
分布式存储与RustFS20 小时前
机器要下线,数据先线上搬家:RustFS 存储池退役实操
运维·云原生·开源·对象存储·分布式存储·s3·性能基准