分类 计算机学习 下的文章
Minikube 本地 Kubernetes 环境搭建与架构解析
一、 核心概念与定位
Minikube:Kubernetes 官方提供的单节点本地学习/测试沙盒。
架构逻辑:通过 Docker 驱动,在宿主机上启动一个名为 minikube 的容器(采用 Docker-in-Docker 架构),该容器内部完整集成了 K8s 控制面与工作节点。
组件分工:
minikube:环境部署与集群生命周期管理工具(创建、启动、停止)。
kubectl:集群交互命令行客户端,用于向 K8s API Server 发送 YAML 部署指令。
生产对比:生产环境通常采用 Kubeadm 自动化搭建高可用集群,或直接使用 公有云托管 K8s(如 ACK / EKS);Minikube 仅用于本地开发调试。
二、 实战详细过程(从零到部署)
Step 1: 下载二进制文件(Binary Files)
在 Linux (CentOS/Ubuntu) 环境下,直接下载所需的二进制工具(先获取稳定版本号再下载 kubectl,避免指令嵌套):
1. 下载 minikube 可执行文件
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
2. 获取 K8s 最新稳定版本号并下载 kubectl 客户端
K8S_VERSION=$(curl -s https://dl.k8s.io/release/stable.txt)
curl -LO "https://dl.k8s.io/release/${K8S_VERSION}/bin/linux/amd64/kubectl"
3. 赋予可执行权限并移入系统 PATH
chmod +x minikube kubectl
sudo mv minikube kubectl /usr/local/bin/Step 2: 启动 Minikube 集群
指定使用 Docker 作为容器运行时驱动来启动单节点 K8s:
minikube start --driver=dockerStep 3: 编写配置与部署应用
编写测试 YAML 配置文件,并使用 kubectl 进行提交:
应用部署配置 (例如 whoami / httpbin)
kubectl apply -f app.yaml
kubectl apply -f ingress.yaml
查看 Pod 运行状态
kubectl get pods -A
SSH 进入 minikube 节点内部
minikube ssh
在节点内部查看 K8s 拉起的底层应用容器
docker ps三、 总结全链路架构
【宿主机环境】 ──(执行 minikube start)──> 【Minikube Docker容器 (模拟K8s节点)】 ──(执行 kubectl apply)──> 【Pod (容器内运行的具体应用)】
链路流转四步法:
下载(Download):获取 minikube 与 kubectl 二进制文件。
初始化(Initialize):执行 minikube start,在宿主机生成一个名为 minikube 的 Docker 容器(充当 K8s 单节点)。
交互(Interact):使用 kubectl apply -f app.yaml 向 minikube 容器内的 API Server 提交配置。
运行(Run):K8s 在 minikube 节点内部拉取镜像并运行 Pod,通过 Service 或 Ingress 对外暴露服务。
四、 附录:示例配置文件
1.app.yaml
1. httpbin 部署(3 個 Pod 副本)
apiVersion: apps/v1
kind: Deployment
metadata:
name: httpbin-deploy
spec:
replicas: 3
selector:
matchLabels:
app: httpbin
template:
metadata:
labels:
app: httpbin
spec:
containers:
- name: httpbin
image: kennethreitz/httpbin
ports:
- containerPort: 80
---
2. httpbin Service (內部 ClusterIP)
apiVersion: v1
kind: Service
metadata:
name: httpbin-svc
spec:
type: ClusterIP
selector:
app: httpbin
ports:
- port: 80
targetPort: 80
---
3. whoami 部署(3 個 Pod 副本)
apiVersion: apps/v1
kind: Deployment
metadata:
name: whoami-deploy
spec:
replicas: 3
selector:
matchLabels:
app: whoami
template:
metadata:
labels:
app: whoami
spec:
containers:
- name: whoami
image: traefik/whoami
ports:
- containerPort: 80
---
4. whoami Service (內部 ClusterIP)
apiVersion: v1
kind: Service
metadata:
name: whoami-svc
spec:
type: ClusterIP
selector:
app: whoami
ports:
- port: 80
targetPort: 802.ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /httpbin(/|$)(.*)
pathType: ImplementationSpecific
backend:
service:
name: httpbin-svc
port:
number: 80
- path: /whoami(/|$)(.*)
pathType: ImplementationSpecific
backend:
service:
name: whoami-svc
port:
number: 80 Apache App test20260806
已
1.hot-web 数据集成/ETL
界面難用的一匹,沒有scroll,顯示不全時只能整體縮放才能看到,但縮小了字就看不到了
2.airflow 任务调度/工作流
還蠻好用的 python寫代碼,可以加入一些讀寫mail,讀寫數據庫的操作等簡單的RPA作業
3.guakamole
JumpServer一樣的工具,好用
4.tika
ocr
5.
待
1.Superset 企业级数据可视化与 BI 商业智能平台
2.Kafka 分布式高吞吐量的消息队列与流处理平台
3.RocketMQ 金融级分布式消息中间件(最早由阿里开源)
4.Zeppelin 互動式數據分析與視覺化 Notebook(筆記本)平台
==================================================
3.同時用3380 & 13570:開通13570,再netsh interface portproxy add v4tov4 listenport=13570 listenaddress=0.0.0.0 connectport=3389 connectaddress=127.0.0.1
Server 鎖屏設定
電源,屏保,RDP連接設定外,還有以下這個:
關閉「機器不活動限制」(最常見原因)這是控制系統閒置多久後自動鎖屏的主因:按下 Win + R 開啟執行視窗,輸入 gpedit.msc 並按下 Enter。依次展開左側目錄:電腦設定 $\rightarrow$ Windows 設定 $\rightarrow$ 安全性設定 $\rightarrow$ 本機原則 $\rightarrow$ 安全性選項在右側找到 互動式登入: 機器不活動限制(Interactive logon: Machine inactivity limit)。點兩下開啟,將時間設定為 0 秒(代表不啟用閒置鎖定),然後點擊 確定。
幫其他軟體過公司 Proxy 認證: genotrance / px
簡單來說它就是一個專門用來「幫其他軟體過公司 Proxy 認證」的免安裝中轉站。
https://github.com/genotrance/px/releases/tag/v0.11.0
[ 你的 Chrome / UiPath 腳本 ]
│
│ (1) 簡單發送請求 (無需處理密碼)
▼[ 本地 Px 代理 (127.0.0.1:3128) ]
│
│ (2) 自動抓取 Windows 憑證庫裡的「Px」密碼/Token 進行封裝
▼[ 公司 Proxy 伺服器 (ics.foxconn.com / 10.191.131.46) ]
│
│ (3) 驗證通過,放行流量
▼[ 外網 / 目標網站 (NVIDIA, 百度...) ]