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
相关推荐
wdxylb1 小时前
云原生俱乐部-shell知识点归纳(1)
linux·云原生
木易双人青3 小时前
01-Docker-简介、安装与使用
运维·docker·容器
晴天彩虹雨7 小时前
存算分离与云原生:数据平台的新基石
大数据·hadoop·云原生·spark
罗不俷8 小时前
【RH134知识点问答题】第13章:运行容器
容器·rhel
春人.11 小时前
PortainerCE 跨云管理:cpolar 内网穿透服务实现多环境统一控制
云原生·eureka
tb_first12 小时前
k8sday11服务发现(2/2)
docker·云原生·容器·kubernetes·k8s
zxcxylong14 小时前
almalinux9.6系统:k8s可选组件安装(1)
云原生·容器·kubernetes·metrics·almalinux·hpa·vpa
君不见,青丝成雪15 小时前
大数据云原生是什么
大数据·云原生
一个天蝎座 白勺 程序猿18 小时前
Apache IoTDB(4):深度解析时序数据库 IoTDB 在Kubernetes 集群中的部署与实践指南
数据库·深度学习·kubernetes·apache·时序数据库·iotdb
熊出没19 小时前
微服务如何集成swagger3
微服务·云原生·架构