kubernetes使用minikube安装
⽂档地址:
https://kubernetes.io/zh-cn/docs
搭建方式
kubeadm 工具化部署(推荐新手 / 中小团队)
kubeadm 是官方提供的自动化部署工具,能快速初始化集群,降低搭建复杂度,适合绝大多数场景。
- 核心优势:
- 自动化程度高,只需几条命令即可完成集群初始化。
- 官方维护,兼容性和稳定性有保障,支持集群升级。
- 学习成本低,无需深入理解 K8s 组件底层细节。
- 关键步骤:
- 准备至少 2 台 Linux 服务器(推荐 CentOS/Ubuntu),配置静态 IP、关闭防火墙和 SELinux。
- 在所有节点安装 Docker、kubeadm、kubelet 和 kubectl。
- 在主节点(Master)执行
kubeadm init初始化控制平面。 - 按照初始化输出的提示,在主节点配置 kubectl 命令行工具。
- 在从节点(Worker)执行
kubeadm join命令,将节点加入集群。
二进制手动部署(适合对集群有深度控制需求的场景)
通过手动下载 K8s 各组件(如 kube-apiserver、kube-controller-manager)的二进制包,逐一配置启动,灵活性最高但复杂度也最大。
- 核心优势:
- 组件版本、配置参数可完全自定义,适合特殊业务需求。
- 无依赖工具,集群性能和资源占用可控性更强。
- 能深入理解 K8s 各组件的工作原理,便于问题排查。
- 核心劣势:
- 部署步骤繁琐,需手动配置证书、服务启停脚本、网络插件等。
- 集群升级、维护成本高,需手动处理组件依赖和版本兼容。
Minikube搭建(学习)
Minikube 是 Kubernetes 官方推荐的本地单节点测试 / 学习环境搭建工具,核心优势是 轻量、一键部署、资源占用低,适合新手入门学习、本地开发测试(无需多台服务器),但不适合生产环境(仅单节点,无高可用)。
云服务商托管部署(适合企业级生产环境)
阿里云(ACK)、腾讯云(TKE)、AWS(EKS)等云厂商提供托管 K8s 服务,无需手动维护控制平面,专注于业务容器管理。
- 核心优势:
- 控制平面(Master 节点)由云厂商托管,无需担心高可用和运维。
- 支持弹性扩容、自动修复节点,与云厂商的存储、网络服务无缝集成。
- 提供监控、日志、告警等配套工具,降低运维复杂度。
- 核心劣势:
- 长期使用有服务费用,成本高于自建集群。
- 对云厂商有一定依赖,迁移到其他平台需额外适配。
minikube搭建
主要是为了学习k8s相关命令。
Docker环镜:
1 | |
Mac os
1 | |
1 | |
linux
购买2C8G的虚拟机 中国香港
1 | |
1 | |
1 | |
启动
1 | |
安装kubectl用于验证:
1 | |
1 | |
命令
查看k8s集群信息
1 | |
1 | |
查看节点信息
1 | |
1 | |
查看内部组件
1 | |
1 | |
部署Nginx
1 | |
查看deployment和pod
1 | |
1 | |
暴露80端⼝, 就是service服务
1 | |
转发端⼝(Mini Kube临时)
1 | |
在浏览器访问,可以看到nginx的index.html
Minikube vs Kubeadm 的网络差异
1. Kubeadm 集群的网络(直接暴露)
Kubeadm 是把 Kubernetes 组件(apiserver、kubelet 等)直接部署在宿主机上(或物理节点):
- NodePort 服务会在 宿主机的物理网卡 上监听一个端口(比如 30000-32767 之间);
- 所以你能直接用「宿主机 IP + NodePort 端口」访问(比如
http://192.168.1.100:30080),因为宿主机的端口和 Kubernetes 服务是 “直接绑定” 的。
2. Minikube 集群的网络(隔离在虚拟环境)
Minikube 为了 “一键搭建、不污染宿主机”,会创建一个 独立的虚拟环境(默认是 Docker 容器,也支持 VM):
- 这个虚拟环境相当于一个 “迷你虚拟机”,有自己独立的内网 IP(比如你之前看到的
192.168.49.2); - Kubernetes 集群的所有组件(包括 NodePort 服务)都运行在这个 “虚拟环境” 内部,没有直接绑定宿主机的端口;
- 宿主机和 Minikube 虚拟环境之间是隔离的,所以你直接用「宿主机 IP + NodePort 端口」访问时,宿主机根本不知道这个端口对应的服务在哪里 —— 相当于 “门牌号指到了小区门口,但小区里的房子藏在独立院子里,外面进不去”。
“minikube service” 和 “端口转发” 的本质:打通隔离的 “通道”
既然 Minikube 的服务藏在 “虚拟环境” 里,就需要两种方式 “打通通道”,让外部(宿主机或公网)能访问:
1. minikube service(内网访问:宿主机→Minikube 虚拟环境)
minikube service <服务名> --url 是 Minikube 内置的 “快捷通道”,作用是:
- 自动找到 Minikube 虚拟环境的内网 IP(比如
192.168.49.2); - 找到 NodePort 服务的端口(比如 30080);
- 直接输出「Minikube 内网 IP + NodePort 端口」的访问地址(比如
http://192.168.49.2:30080)。
为什么能访问?
这个地址的 IP 是 Minikube 虚拟环境的内网 IP(宿主机能通过 Docker 桥接网络访问这个 IP),相当于 “直接访问小区里的房子门牌号”,而不是 “小区门口的门牌号”。
适用场景:
- 仅在 宿主机内部访问(比如你在搭建 Minikube 的机器上用浏览器或 curl 访问);
- 简单快捷,无需手动配置,适合开发 / 测试。
2. 端口转发(公网访问:外部机器→宿主机→Minikube 虚拟环境)
如果需要让 宿主机以外的机器(比如同一局域网的其他电脑、公网机器) 访问 Minikube 里的服务,就需要 “端口转发”,本质是:
- 在 宿主机的物理网卡 上监听一个端口(比如 8080);
- 把所有访问「宿主机 IP:8080」的请求,转发到「Minikube 内网 IP:NodePort 端口」(比如
192.168.49.2:30080); - 相当于在 “小区门口” 设一个中转站,外部访客找中转站,中转站再把人领到小区里的房子。
方式 1:kubectl 端口转发(临时,重启失效)
1 | |
方式 2:Minikube 隧道(永久,后台运行)
1 | |