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 相关包
go 复制代码
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
(2)配置 yum 源
go 复制代码
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
go 复制代码
sudo yum install -y docker-ce docker-ce-cli containerd.io

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

go 复制代码
# 这只是个例子
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7  containerd.io-1.4.6
(4)启动
go 复制代码
systemctl enable docker --now
(5)配置加速

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

go 复制代码
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 可以换成自己的加速地址
image-20230716095051511

3.安装 Minikube

(1)下载并安装 Minikube
go 复制代码
sudo curl -LO https://storage.googleapis.com/minikube/releases/v1.29.0/minikube-linux-amd64 && sudo install minikube-linux-amd64 /usr/local/bin/minikube
null
(2)查看 Minikube 版本
go 复制代码
minikube version

image-20230716085710752

4.启动 Minikube

(1)启动集群
go 复制代码
minikube start --image-mirror-country='cn' --kubernetes-version=v1.23.8
null

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

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

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

命令参数:

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

查看版本

go 复制代码
minikube kubectl version
null

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

查看 minikube 容器 (Docker)

go 复制代码
docker ps

查看运行的全部 pod

go 复制代码
minikube kubectl -- get pods -A
null

5.安装 kubectl

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

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

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

安装 kubectl:

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

查看版本的详细信息:

go 复制代码
kubectl version --client --output=yaml
null

6.启动 dashboard

1.启动并显示代理地址
go 复制代码
minikube dashboard --url

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

2.设置 kubectl proxy 代理
go 复制代码
minikube kubectl -- proxy --address='0.0.0.0'  --accept-hosts='^*$' &
null

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

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

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

image-20230716092221443

3.查看 dashboard 状态
go 复制代码
kubectl get svc -n kubernetes-dashboard
null

或者查看全部的 pod

go 复制代码
kubectl get pod -A
null

2 个 kubernetes-dashboard 都是 Running 状态。

7.部署一个应用

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

(1)创建 deployment
go 复制代码
kubectl create deployment test-nginx --image=nginx:1.7.9
(2)查看
go 复制代码
kubectl get pod,deploy
null

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

(3)暴漏 service 端口
go 复制代码
kubectl expose deploy test-nginx --port=80 --type=NodePort

查看 service

go 复制代码
kubectl get svc
null

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

(4)转发端⼝
go 复制代码
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 都展现出来的。

  • • 不懂Neo4j?没关系,一起学

  • • 不懂Neo4j?没关系,先学增删改查

  • • SpringBoot+Neo4j在社交电商中,讲述你是怎么被绑定为下线的

  • • 请别再问我什么是分布式事务

  • • 分布式事务解决方案之2PC、TCC

  • • 分布式事务解决方案之可靠消息最终一致性、最大努力通知

  • • 天天都用消息队列,却不知道为啥要用MQ,这就有点尴尬了

  • • 拜托,面试别再问我数据库的分库分表!

null
相关推荐
铅笔侠_小龙虾2 小时前
Docker 实战 -- Mysql
mysql·docker·容器
阿里云云原生2 小时前
Higress MCP 服务管理,助力构建私有 MCP 市场
云原生
IvanCodes2 小时前
三、Docker常用命令
docker·容器
zzywxc7873 小时前
云原生 Serverless 架构下的智能弹性伸缩与成本优化实践
云原生·架构·serverless
海星船长丶4 小时前
基于docker进行渗透测试环境的快速搭建(在ubantu中docker设置代理)
运维·docker·容器
KubeSphere 云原生4 小时前
Higress 上架 KubeSphere Marketplace,助力企业构建云原生流量入口
云原生
AKAMAI9 小时前
在Akamai平台上进行VOD转码的参考架构
后端·云原生·云计算
IT成长日记10 小时前
【Docker基础】Docker网络模式:Host模式深度解析
网络·docker·容器·host·网络模式