OrbStack Kubernetes 文档深度分解与入门指南
› 社区话题 › Linux/macOS 与自动化运维 › OrbStack Kubernetes 文档深度分解与入门指南
- 该话题为空。

- 作者帖子
- 2025年9月21日 - 下午3:33 #1144
追光管理员OrbStack 的 Kubernetes 集群是为本地开发而生的,它最大的优势是开箱即用、零配置网络、与 Docker 无缝集成。您无需像 Minikube 或 Kind 那样处理复杂的端口转发和网络问题。
一、核心优势:为什么选择 OrbStack 的 K8s?
在开始操作前,先理解它的“超能力”,这会让您的学习事半功倍:
1. 零配置网络:
所有服务类型(ClusterIP, NodePort, LoadBalancer)都可直接从 Mac 访问,无需 kubectl port-forward。
Pod IP 和 ClusterIP 可直接 curl,方便调试。
内置 .k8s.orb.local 域名,完美支持 Ingress。2. 与 Docker 无缝集成:
最重要的特性:您用 docker build 构建的镜像,无需推送到任何仓库,可以直接在 Kubernetes 的 Pod 中使用!
避坑提示:默认情况下,K8s 会尝试拉取 :latest 标签的镜像。如果您想用本地刚构建的镜像,请:
使用其他标签,如 :dev、:v1。
或者在 Pod 的 YAML 中明确设置 imagePullPolicy: IfNotPresent。3. 轻量级 & GUI:
单节点集群,资源占用少。
自带图形界面,方便查看集群状态。二、入门第一步:部署您的第一个应用
现在,让我们动手实践。我们将从最简单的 Deployment 和 Service 开始。
? 步骤 1: 部署一个 Nginx 应用
打开您的终端,直接运行以下命令:
bash
1. 创建一个名为 \’nginx\’ 的 Deployment,使用官方 nginx 镜像kubectl create deployment nginx --image nginx
2. 将这个 Deployment 暴露为一个 Service,类型为 NodePort
kubectl expose deployment nginx --type=NodePort --port=80
? 步骤 2: 访问您的应用
现在,您有三种方式访问这个 Nginx 服务,这是 OrbStack 的强大之处:
方式一:通过 NodePort + localhost
这是最传统的方式,但 OrbStack 让它变得极其简单。
bash
3. 查看服务信息,找到分配的 NodePort (通常是 30000-32767 之间的端口)kubectl get svc nginx
命令输出示例:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx NodePort 192.168.194.217 80:32042/TCP 10s访问方式:
直接在浏览器中打开:http://localhost:32042
(请将 32042 替换为您实际看到的端口号)
方式二:通过 ClusterIP (直接访问内部IP)
OrbStack 允许您直接从 Mac 访问集群内部的 IP 地址。
bash
4. 直接 curl ClusterIPkubectl get svc nginx
找到 CLUSTER-IP,例如 192.168.194.217
curl -I http://192.168.194.217
您会看到 HTTP/1.1 200 OK 的响应。
方式三:通过 LoadBalancer + 域名 (为未来做准备)
虽然我们创建的是 NodePort 类型,但 OrbStack 对 LoadBalancer 的支持是其亮点。我们稍后会用到。
三、进阶:使用您自己的容器镜像
这是 OrbStack 最实用的功能,让您告别本地仓库。
? 步骤 1: 构建您自己的镜像
假设您有一个 Dockerfile,内容如下:
dockerfile
FROM nginx:alpine COPY ./my-website /usr/share/nginx/html
在 Dockerfile 所在目录构建镜像,并打上一个非 latest 的标签:
bash
docker build -t my-website:dev .
? 步骤 2: 在 Kubernetes 中使用它
创建一个名为 my-website.yaml 的文件:
yaml
apiVersion: apps/v1 kind: Deployment meta name: my-website spec: replicas: 1 selector: matchLabels: app: my-website template: metadata: labels: app: my-website spec: containers: name: nginx image: my-website:dev ⬅️ 直接使用您刚构建的本地镜像 imagePullPolicy: IfNotPresent ⬅️ 关键:告诉 K8s 优先使用本地镜像
apiVersion: v1
kind: Service
metadata:
name: my-website-svc
spec:
type: NodePort
selector:
app: my-website
ports:
protocol: TCP
port: 80
targetPort: 80然后应用它:
bash
kubectl apply -f my-website.yaml
kubectl get svc my-website-svc
获取 NodePort 并访问
四、高阶:使用 Ingress 管理多个服务 (生产环境模拟)
当您有多个服务时,用 NodePort 管理会很混乱。这时就需要 Ingress。
? 步骤 1: 安装 Ingress Controller
OrbStack 推荐使用 ingress-nginx。运行以下命令安装:
bash
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.1/deploy/static/provider/cloud/deploy.yaml
等待几分钟,直到所有 Pod 都处于 Running 状态:
bash
kubectl get pods -n ingress-nginx
? 步骤 2: 创建 Ingress 规则
假设您有两个服务:frontend-svc 和 api-svc。
创建一个 ingress.yaml 文件:
yaml
apiVersion: networking.k8s.io/v1 kind: Ingress meta name: my-ingress spec: ingressClassName: nginx 指定使用我们安装的 nginx ingress rules: host: frontend.k8s.orb.local ⬅️ 关键:使用 OrbStack 提供的免费域名 http: paths: path: / pathType: Prefix backend: service: name: frontend-svc port: number: 80 host: api.k8s.orb.local ⬅️ 另一个子域名 http: paths: path: / pathType: Prefix backend: service: name: api-svc port: number: 8080
应用配置:
bash
kubectl apply -f ingress.yaml
访问方式:
前端服务:直接在浏览器访问 http://frontend.k8s.orb.local
API 服务:直接在浏览器或 Postman 中访问 http://api.k8s.orb.local无需任何 hosts 配置,无需指定端口! 这就是 OrbStack 的魔法。
五、日常管理命令
bash
查看集群状态orb status
停止/启动集群
orb stop k8s orb start k8s
删除并重建集群 (慎用)
orb delete k8s
? 总结:您的学习路径
1. 第一步:运行 kubectl create deployment nginx –image nginx 和 kubectl expose deployment nginx –type=NodePort –port=80,通过 localhost:端口 访问,感受成功。
2. 第二步:构建您自己的 Docker 镜像,打上 :dev 标签,然后在 K8s YAML 中通过 imagePullPolicy: IfNotPresent 部署它。
3. 第三步:安装 Ingress Controller,并创建 Ingress 规则,体验 .k8s.orb.local 域名的便利。
- 作者帖子
- 在下方一键注册,登录后就可以回复啦。