minikube,搭建+镜像加速,坚持 3 分钟,带你玩的明明白白

本文提供了一步步的指导,从安装Docker开始,然后安装cri-docker,接着安装crictl工具,再通过Minikube搭建Kubernetes集群,并启用Dashboard。此外,还介绍了如何使用kubectl进行集群管理和操作,以及如何解决minikube中的Docker镜像问题。
摘要由CSDN通过智能技术生成

一、 安装 docker

推荐离线模式安装,详见docker离线搭建

二、 安装 cri-docker

  1. 下载安装
# 在 https://github.com/Mirantis/ 下载
https://github.com/Mirantis/

tar -xvf cri-dockerd-0.3.1.amd64.tgz

cp cri-dockerd/cri-dockerd /usr/bin/

chmod +x /usr/bin/cri-dockerd

# 确认已安装版本
cri-dockerd --version
  1. 配置启动文件
    cri-docker.service
# 创建cri-docker.service配置文件
vi /lib/systemd/system/cri-docker.service


[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket

[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

StartLimitBurst=3

StartLimitInterval=60s

LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity

TasksMax=infinity
Delegate=yes
KillMode=process

[Install]
WantedBy=multi-user.target

cri-docker.socket

# 创建cri-docker.socket配置文件
vi /lib/systemd/system/cri-docker.socket


[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service

[Socket]
ListenStream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target

  1. 启动
systemctl daemon-reload

systemctl start docker.service

systemctl enable cri-docker

systemctl status docker.service

三、 安装 crictl

  1. 下载地址 https://github.com/kubernetes-sigs/cri-tools/releases
  2. 解压
    sudo tar zxvf crictl-xx-linux-amd64.tar.gz -C /usr/local/bin

四、 搭建 minikube

  1. 安装 minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

sudo install minikube-linux-amd64 /usr/local/bin/minikube
  1. 安装 kubectl
wget -c "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
  1. 开启dashboard
minikube addons enable metrics-server

kubectl proxy --port=45396 --address='0.0.0.0' --disable-filter=true --accept-hosts='^.*' &

minikube dashboard --url &
  1. 外部浏览器访问
    a. 确认关闭防火墙
    b. 将下图的IP:Port 替换成外部IP:45396,然后在浏览器中打开即可
    在这里插入图片描述

  2. 基本命令

# 启动集群 --driver=docker (默认)
minikube start --force --image-mirror-country='cn' --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
# 查看节点。kubectl 是一个用来跟 K8S 集群进行交互的命令行工具
kubectl get node
# 停止集群
minikube stop
# 清空集群
minikube delete --all
# 安装集群可视化 Web UI 控制台
minikube dashboard

# other
# 将外部 docker 环境映射到 minikube 的 docker 环境
eval $(minikube docker-env)
  1. nginx 测试
# 创建 nginx 测试
kubectl create deployment nginx --image=nginx

# 创建 service 暴露端口
# port 为service 暴露端口,target-port 为目标容器端口
kubectl expose deployment nginx --port=6001 --target-port=80 --type=NodePort

# 创建端口转发 web 访问端口 :service 暴露端口
kubectl port-forward --address 0.0.0.0 service/nginx 8001:6001 &

  1. 加载宿主机 docker(解决 minikube 中 docker 无法pull 问题,且设置镜像加速比较麻烦,这个方法目前最好)
# 示例
# 宿主机执行(宿主机配置过加速)
docker pull mysql

minikube image load mysql

示例,可复制为 yaml 文件,或者复制代码在dashboard中执行

ps:注意,下面两个示例,实用的是无状态模式,仅供测试实用,实际无论是开发测试生产,数据库类型,都是有状态模式。但是呢,一般也不用 k8s 部署。此处仅供参考测试。
8. 示例搭建mysql

apiVersion: apps/v1
kind: Deployment # 副本控制器RC
metadata:
 name: mysql #RC 的名称,全局唯一
 namespace: default # 默认空间
spec:
 replicas: 1 #Pod 副本的期待数量
 selector:
   matchLabels:
     app: mysql # 符合目标的Pod拥有此标签
 template: # 根据此模版创建Pod的副本
   metadata:
     labels:
       app: mysql # Pod副本拥有的标签,对应RC的Selector
   spec:
     containers: # Pod的内容的定义部分
       - name: mysql # 容器的名称
         image: mysql # 容器对应的Docker Image
         imagePullPolicy: IfNotPresent
         ports:
           - containerPort: 3306 # 容器应用监听的端口号
         env:
           - name: MYSQL_ROOT_PASSWORD # 设置mysql的初始化密码
             value: "123456" # 设置mysql的初始化密码
         volumeMounts:
           - name: mysql-data
             mountPath: /var/lib/mysql
     volumes:
       - name: mysql-data
         hostPath:
           path: /var/lib/mysql
---
apiVersion: v1
kind: Service # 表明是Kubernetes Service
metadata:
 name: mysql # Service 的全局唯一名称
spec:
 type: NodePort
 selector:
   app: mysql
 ports: # Service 提供服务的端口
   - port: 3306 # Service 对应的Pod拥有这里定义的标签
     targetPort: 3306
  1. 示例搭建 redis
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis
  labels:
    app: redis
spec:
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
      - name: redis
        image: redis
        imagePullPolicy: IfNotPresent
#        command: ["redis-server","/etc/redis/redis.conf"]
        ports:
        - containerPort: 6379
 
---
kind: Service
apiVersion: v1
metadata:
  name: redis
spec:
  type: NodePort
  selector:
    app: redis
  ports:
  - port: 6379
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Minikube中部署Docker镜像的过程可以参考以下步骤: 1. 首先,在Minikube中部署Registry镜像,并通过Service访问。这样可以实现本地镜像的推送和拉取。 2. 进入docker-demo文件夹,执行docker build命令生成镜像文件。使用命令`docker build -t halo26812/docker-demo:0.0.1 .`来生成镜像文件,其中`-t halo26812/docker-demo:0.0.1`表示设置镜像的名称和版本信息。 3. 可以使用`docker images`命令查看镜像是否成功构建,其中会显示REPOSITORY、TAG、IMAGE ID等信息。 4. 在Minikube上运行Docker镜像。使用`docker run`命令来运行镜像,其中`-dp 3000:8080`表示将容器的8080端口映射到主机的3000端口,`halo26812/docker-demo:0.0.1`是镜像的名称和版本信息。 通过以上步骤,你可以在Minikube中成功部署Docker镜像。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Minikube部署私有镜像仓库](https://blog.csdn.net/m0_46240003/article/details/127930479)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [minikube 实战篇 - 镜像打包部署 - 1](https://blog.csdn.net/exception_class/article/details/126272369)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mose-x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值