跳至主要内容

使用 Podman Desktop 设置和运行本地 Kubernetes 集群

·阅读时长 9 分钟

在本博文中,您将学习使用 Podman Desktop 运行 Kubernetes 文档示例:使用 Redis 部署 PHP Guestbook 应用程序

议程

  1. 安装 Podman Desktop。
  2. 安装和初始化您的容器引擎:Podman。
  3. 安装和启动您的本地 Kubernetes 提供者:Kind。
  4. 启动 Redis 主节点。
  5. 启动和扩展 Redis 从节点。
  6. 启动并公开 Guestbook 前端。

安装 Podman Desktop

您需要 Podman Desktop。

  1. 访问 Podman Desktop 安装文档
  2. 点击您的平台名称:WindowsmacOSLinux
  3. 按照说明进行操作。坚持使用默认安装方法。
  4. 启动 **Podman Desktop**。

此时,您拥有一个图形用户界面,可以

  • 安装 Podman 和 Kind。
  • 控制和使用您的容器引擎和 Kubernetes 集群。
  • 在您的容器引擎上运行您的应用程序,并将其迁移到 Kubernetes。

安装和初始化您的容器引擎:Podman

Podman Desktop 可以控制各种容器引擎,例如

  • Docker
  • Lima
  • Podman

考虑安装 Podman 容器引擎以获得

  • 增强的安全性
  • 无守护进程
  • 开源

容器是 Linux 技术。

  • 在 Linux 上,您可以本地安装 Podman。请参阅:在 Linux 上安装 Podman
  • 在 macOS 和 Windows 上,Podman 需要在 Linux 虚拟机中运行:Podman 机器。使用 Podman Desktop 安装 Podman 并初始化您的 Podman 机器

步骤

  1. 打开 Podman Desktop **仪表盘**
  2. **仪表盘**显示“Podman Desktop 无法找到 Podman 安装”。
  3. 点击 **安装**。
  4. Podman Desktop 检查安装 Podman Engine 的先决条件。如有必要,请按照说明安装先决条件。
  5. Podman 显示对话框:“此系统上未安装 Podman,您是否要安装 Podman?”。点击 **是** 以安装 Podman。
  6. 点击 **初始化并启动**。

验证

  • **仪表盘**显示“Podman 正在运行”。

    Podman is running

此时,您可以开始使用容器。

安装和启动您的本地 Kubernetes 提供者:Kind

您希望将您的应用程序部署到本地 Kubernetes 集群。

Podman Desktop 可以帮助您在容器引擎(例如 Podman)上运行 Kind 支持的本地 Kubernetes 集群。

Podman Desktop 帮助您 安装 kind CLI

  1. 在状态栏中,点击 **Kind**,并按照提示进行操作。

  2. kind CLI 可用时,状态栏不再显示 **Kind**。

  3. 在 Windows 上,在 rootful 模式下配置 Podman

    $ podman system connection default podman-machine-default-root
  4. 转到 ** 设置 > 资源**

  5. 在 **Podman 图标 Podman** 磁贴中,点击 **** 图标以重新启动 Podman 容器引擎。

  6. 在 **Kind 图标 Kind** 磁贴中,点击 **创建新** 按钮。

    1. **名称**:输入 kind-cluster
    2. **提供者类型**:选择 podman
    3. **HTTP 端口**:选择 9090
    4. **HTTPS 端口**:选择 9443
    5. **设置入口控制器**:已启用
    6. 点击 **创建** 按钮。 创建 Kind 集群屏幕
  7. 创建成功后,点击 **返回资源** 按钮

验证

  1. 在 ** 设置 > 资源** 中,您的 Kind 集群正在运行。

    Kind cluster is running

  2. 在 **Podman Desktop** 托盘中,打开 **Kubernetes** 菜单:您可以将上下文设置为 Kind 集群:kind-kind-cluster

    Kind cluster Kubernetes context in the tray

    此时,您可以开始使用容器和本地 Kubernetes 集群。

其他资源

启动 Redis 主节点

Guestbook 应用程序使用 Redis 来存储数据。

使用 Podman Desktop,您可以在本地容器引擎上准备 Redis 主节点镜像和容器,并将结果部署到 Kubernetes Pod 和服务中。这在功能上等同于 Kubernetes 示例中提出的 redis-leader 部署。

步骤

  1. 打开 ** 镜像 > 拉取镜像**。

    1. 镜像拉取地址: 输入 docker.io/redis:6.0.5
    2. 点击 **拉取镜像** 将镜像拉取到您容器引擎的本地镜像仓库。
    3. 点击 **完成** 返回镜像列表。
  2. 搜索镜像: 输入 redis:6.0.5 搜索镜像。

  3. 点击 **** 打开 **从镜像创建容器** 对话框。

    1. 容器名称: 输入 leader,
    2. 6379/tcp 的本地端口: 6379
    3. 点击 ** 启动容器** 在您的容器引擎中启动容器。
  4. 搜索容器: 输入 leader 搜索正在运行的容器。

  5. 点击 **** 停止容器,并将 6379 端口留给 Redis 跟踪器容器使用。

  6. 点击 ** > 部署到 Kubernetes** 打开 **将生成的 Pod 部署到 Kubernetes** 屏幕。

    1. Pod 名称: 输入 redis-leader
    2. 使用 Kubernetes 服务: 选择 **用服务替换容器上的 hostPort 暴露。这是推荐的暴露端口方式,因为集群策略可能会阻止使用 hostPort。**
    3. 使用 Kubernetes Ingress 在本地暴露服务: 取消选择 **创建一个 Kubernetes Ingress 来访问此 Pod 公开的端口,在默认 Ingress 控制器位置。例如,在使用 Podman Desktop 创建的默认 Kind 集群上:https://127.0.0.1:9090。要求:您的集群有一个 Ingress 控制器`**。
    4. Kubernetes 命名空间: 选择 default
    5. 点击 ** 部署**。 Deploy generated leader pod to Kubernetes screen
    6. 等待 Pod 达到状态:阶段:运行
    7. 点击 **完成**。

验证

  • Pods** 屏幕列出了正在运行的 redis-leader Pod。

    leader pod is running

启动 Redis 跟踪器

虽然 Redis 主节点是一个单独的 Pod,但您可以通过添加一些 Redis 跟踪器或副本,使其具有高可用性并满足流量需求。

使用 Podman Desktop,您可以在本地容器引擎上准备 Redis 跟踪器镜像和容器,并将结果部署到 Kubernetes Pods 和服务中。 这在功能上等同于 Kubernetes 示例中提出的 redis-follower 部署。

步骤

  1. 打开 ** 镜像 > 拉取镜像**。
    1. 镜像拉取地址: 输入 gcr.io/google_samples/gb-redis-follower:v2
    2. 点击 **拉取镜像** 将镜像拉取到您容器引擎的本地镜像仓库。
    3. 点击 **完成** 返回镜像列表。
  2. 搜索镜像: 输入 gb-redis-follower:v2 搜索镜像。
  3. 点击 **** 打开 **从镜像创建容器** 对话框。
    1. 容器名称: 输入 follower,
    2. 6379/tcp 的本地端口: 6379
    3. 点击 ** 启动容器** 在您的容器引擎中启动容器。
  4. 搜索容器: 输入 follower 搜索正在运行的容器。
  5. 点击 **** 停止容器:您不需要在容器引擎中运行它。
  6. 点击 ** > 部署到 Kubernetes** 打开 **将生成的 Pod 部署到 Kubernetes** 屏幕。
    1. Pod 名称: 输入 redis-follower
    2. 使用 Kubernetes 服务: 选择 **用服务替换容器上的 hostPort 暴露。这是推荐的暴露端口方式,因为集群策略可能会阻止使用 hostPort。**
    3. 使用 Kubernetes Ingress 在本地暴露服务: 取消选择 **创建一个 Kubernetes Ingress 来访问此 Pod 公开的端口,在默认 Ingress 控制器位置。例如,在使用 Podman Desktop 创建的默认 Kind 集群上:https://127.0.0.1:9090。要求:您的集群有一个 Ingress 控制器`**。
    4. Kubernetes 命名空间: 选择 default
    5. 点击 ** 部署**。 Deploy generated follower pod to Kubernetes screen
    6. 等待 Pod 达到状态:阶段:运行
    7. 点击 **完成**。
  7. 要添加副本,请使用另一个 **Pod 名称** 值重复最后一步。

验证

  • 在 ** Pods** 屏幕列出了运行中的 `redis-follower` pod。

    follower pods are running

启动默认前端

现在您已经启动并运行了 Guestbook 的 Redis 存储,可以启动 Guestbook Web 服务器。与 Redis follower 一样,使用 Kubernetes pod 和服务部署前端。

Guestbook 应用使用 PHP 前端。它被配置为与 Redis follower 或 leader 服务通信,具体取决于请求是读操作还是写操作。前端公开了一个 JSON 接口,并提供了一个基于 jQuery-Ajax 的用户界面。

使用 Podman Desktop,您可以在本地容器引擎上准备 Guestbook 前端镜像和容器,并将结果部署到 Kubernetes pod 和服务。这在功能上等同于 Kubernetes 示例提出的 `frontend` 部署。

步骤

  1. 打开 ** 镜像 > 拉取镜像**。
    1. **要拉取的镜像**: 输入 `gcr.io/google_samples/gb-frontend:v5`
    2. 点击 **拉取镜像** 将镜像拉取到您容器引擎的本地镜像仓库。
    3. 等待拉取完成。
    4. 点击 **完成** 返回镜像列表。
  2. ** 搜索镜像**: 输入 `gb-frontend:v5` 查找镜像。
  3. 点击 **** 打开 **从镜像创建容器** 对话框。
    1. **容器名称**: 输入 `frontend`,
    2. **`80/tcp` 的本地端口**: `9000`。
    3. 点击 ** 启动容器** 在您的容器引擎中启动容器。
  4. ** 搜索容器**: 输入 `frontend` 查找运行中的容器。
  5. 点击 **** 停止容器:您不需要在容器引擎中运行它。
  6. 点击 ** > 部署到 Kubernetes** 打开 **将生成的 Pod 部署到 Kubernetes** 屏幕。
    1. **Pod 名称**: 输入 `frontend`。
    2. 使用 Kubernetes 服务: 选择 **用服务替换容器上的 hostPort 暴露。这是推荐的暴露端口方式,因为集群策略可能会阻止使用 hostPort。**
    3. **使用 Kubernetes Ingress 在本地公开服务**: 选择 **创建 Kubernetes ingress 以访问此 pod 公开的端口,位于默认的 ingress 控制器位置。例如:在使用 Podman Desktop 创建的默认 Kind 集群上:`https://127.0.0.1:9090`。要求:您的集群有一个 ingress 控制器`**。
    4. Kubernetes 命名空间: 选择 default
    5. 点击 ** 部署**。 Deploy generated frontend pod to Kubernetes screen
    6. 等待 Pod 达到状态:阶段:运行
    7. 点击 **完成**。

验证

  1. 在 ** Pods** 屏幕列出了运行中的 `frontend` pod。

    frontend pod is running

  2. 访问 `https://127.0.0.1:9090`:Guestbook 应用正在运行。