OrbStack Kubernetes 文档深度分解与入门指南

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

标签: , ,

  • 该话题为空。
正在查看 0 条回复
  • 作者
    帖子
    • #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 ClusterIP

      kubectl 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 域名的便利。

正在查看 0 条回复
  • 在下方一键注册,登录后就可以回复啦。