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
相关推荐
java_logo3 小时前
Docker 部署 Elasticsearch 全流程手册
大数据·运维·mongodb·elasticsearch·docker·容器
Stay Passion4 小时前
Docker 组件:Docker Swarm
运维·docker·容器
路過的好心人4 小时前
Docker + Rabbitmq 集群部署
docker·容器·rabbitmq
丈剑走天涯6 小时前
k8s etcd服务安装维护
云原生·etcd·devops·1024程序员节
青0721松6 小时前
千云低代码平台ETMS-k8s实施部署
低代码·云原生·容器
小小的木头人7 小时前
基于Docker 搭建 Prometheus & Grafana 环境
运维·docker·容器·grafana·prometheus
睡不醒的猪儿8 小时前
k8s部署自动化工具jenkins
云原生·kubernetes·自动化·jenkins
KevinPedri11 小时前
测试:uk8s创建监控和告警同步飞书等渠道
docker·kubernetes·云计算·1024程序员节
秋千码途11 小时前
在K8S中部署MySQL主从
mysql·云原生·容器·kubernetes