minikube搭建K8S集群

1、部署环境

  • 华为云ECS

  • 操作系统: Linux CentOS 7.9 64位

  • CPU & 内存:2核(vCPU) 4 GiB

  • 硬盘:需要20G

  • 网络:需要网络,要下载、访问

  • 容器:需要先安装Docker, Docker 版本:24.0.4

  • Kubernetes 版本:1.23.8

2.安装docker并启动

(1)移除以前docker相关包

arduino 复制代码
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

(2)配置yum源

arduino 复制代码
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

(3)安装docker

lua 复制代码
sudo yum install -y docker-ce docker-ce-cli containerd.io

也可以指定某个版本进行安装,例如:

bash 复制代码
# 这只是个例子
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7  containerd.io-1.4.6

(4)启动

bash 复制代码
systemctl enable docker --now

(5)配置加速

这里额外添加了docker的生产环境核心配置cgroup

bash 复制代码
sudo mkdir -p /etc/docker 
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://lkb2w75n.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

其中,registry-mirrors 可以换成自己的加速地址

3.安装Minikube

(1)下载并安装 Minikube

bash 复制代码
sudo curl -LO https://storage.googleapis.com/minikube/releases/v1.29.0/minikube-linux-amd64 && sudo install minikube-linux-amd64 /usr/local/bin/minikube

(2)查看 Minikube版本

复制代码
minikube version

4.启动 Minikube

(1)启动集群

ini 复制代码
minikube start --image-mirror-country='cn' --kubernetes-version=v1.23.8

发现报错了,意思是不能用root用户运行这个命令。

我们直接加上 --force,强制执行

css 复制代码
 minikube start --force --image-mirror-country='cn' --kubernetes-version=v1.23.8

命令参数:

ini 复制代码
 --image-mirror-country:cn 指定为国内镜像源;
 --cpus=2: 为 minikube 虚拟机分配 CPU 核数;
 --memory=2000mb: 为 minikube 虚拟机分配内存数;
 --kubernetes-version=***: 指定部署的kubernetes版本;
 --driver=docker:指定驱动,默认是 docker;

(2)验证

lua 复制代码
minikube status

查看版本

复制代码
minikube kubectl version

服务端版本和客户端版本都正常展示了!

查看 minikube 容器 (Docker)

复制代码
docker ps

查看运行的全部pod

arduino 复制代码
minikube kubectl -- get pods -A

5.安装 kubectl

由于 minikube 内置的 kubectl 命令功能不全,所以最好独立安装一个 kubectl

用以下命令下载最新发行版:

bash 复制代码
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

安装 kubectl:

bash 复制代码
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

查看版本的详细信息:

css 复制代码
kubectl version --client --output=yaml

6.启动 dashboard

1.启动并显示代理地址

css 复制代码
minikube dashboard --url

这个 URL 只能在宿主机内部访问,在宿主机之外无法直接访问,需要设置 kubectl proxy 代理或其它方式

2.设置 kubectl proxy 代理

ini 复制代码
minikube kubectl -- proxy --address='0.0.0.0'  --accept-hosts='^*$' &

需要修改 ECS 防火墙规则,允许入方向的 8001 端口通行。

在宿主机之外浏览器访问:

ruby 复制代码
http://ECS公网IP:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

3.查看 dashboard 状态

arduino 复制代码
kubectl get svc -n kubernetes-dashboard

或者查看全部的pod

arduino 复制代码
kubectl get pod -A

2个kubernetes-dashboard 都是Running状态。

7.部署一个应用

部署一个nginx,并通过IP外网访问

(1)创建deployment

ini 复制代码
kubectl create deployment test-nginx --image=nginx:1.7.9

(2)查看

arduino 复制代码
kubectl get pod,deploy

发现pod和deployment都已经部署成功了

(3)暴漏service端口

css 复制代码
kubectl expose deploy test-nginx --port=80 --type=NodePort

查看service

arduino 复制代码
kubectl get svc

如果是kubernetes集群,直接访问 集群中的任意一个IP:80 即可访问,但是我们安装的是 minikube,所以不能用这个方式,需要对80端口转发

(4)转发端⼝

bash 复制代码
 kubectl port-forward --address 0.0.0.0 service/test-nginx 8080:80 &

为了方便区分,将创建的service(test-nginx)80端口转发到8080

访问 http://ECS公网IP:8080/

部署了一个应用后,我们回过头来看dashboard

看到我们用命令部署的nginx相关的pod、deployment、service都展现出来的。

欢迎关注我的公众号,第一时间接收最新文章~ 搜索公众号: 码咖 或者 扫描下方二维码:

相关推荐
程序员JerrySUN18 分钟前
Linux 内核内存管理子系统全面解析与体系构建
java·linux·运维
风象南32 分钟前
SpringBoot的5种签到打卡实现方案
java·spring boot·后端
追逐时光者34 分钟前
C#/.NET/.NET Core技术前沿周刊 | 第 41 期(2025年6.1-6.8)
后端·.net
1candobetter38 分钟前
JAVA后端开发——多租户
java·开发语言
追逐时光者41 分钟前
不写一行代码 .NET 使用 FluentCMS 快速构建现代化内容管理系统(CMS)
后端·.net·cms
星辰离彬1 小时前
Java 高级泛型实战:8 个场景化编程技巧
java·开发语言·后端·程序人生
筏.k1 小时前
C++ 网络编程(10) asio处理粘包的简易方式
java·网络·c++
张哈大2 小时前
【 java 虚拟机知识 第一篇 】
java·开发语言·jvm·笔记·缓存
卑微的Coder7 小时前
Redis Set集合命令、内部编码及应用场景(详细)
java·数据库·redis
CrissChan7 小时前
Pycharm 函数注释
java·前端·pycharm