OpenShift 4.x HOL教程汇总
在 podman-desktop 1.2.1 + podman 4.4 环境中验证。

什么是 podman 和 podman-desktop

在这里插入图片描述

  • podman 是 RedHat 公司主导的一个免费的开源容器项目,目标是平替安全能力较差的 Docker。作为运行容器的独立环境,podman 目前已经广泛被用在 Linux、MacOS 或 Windows 环境中。尤其在 RHEL、CentOS、SUSE、Ubuntu 等 Linux 中,podman 已经是默认的容器运行环境了。除了比 Docker 有更优的安全运行特性外,podman 还有很多其他特性。例如 podman 不但可以运行标准容器,还可以像 Kubernetes 那样运行 Pod(但不能调度 Pod),因此可以作为容器应用开发、测试和运行的环境。
  • podman desktop 是运行 podman 的图形化工具,可以让对容器/Pod的操作更加容易。

安装 podman 和 podman-desktop 基本环境

本文使用了运行Fedora 38 桌面版的虚机,其中缺省会自带 podman 运行环境。另外由于要在其中运行 Kubernetes 集群,因此虚机内存最少配置 6G。

  1. 查看 podman 版本。
$ podman version
Client:       Podman Engine
Version:      4.4.2
API Version:  4.4.2
Go Version:   go1.20.1
Built:        Wed Mar  1 19:22:39 2023
OS/Arch:      linux/amd64
  1. 在 https://podman-desktop.io/downloads 页面下载 tar.gz 形式的 podman-desktop 文件包。
  2. 解压文件,然后运行 podman-desktop。
$ tar -xvf podman-desktop-1.2.1.tar.gz
$ cd podman-desktop-1.2.1
$ podman-desktop
  1. 在初始界面中点击下方的 Go to Podman Desktop 进入正式界面。
    在这里插入图片描述

Image、Container 和 Pod 的基本操作

拉取 Image

  1. 在 Setting 栏目中的 Registries 中可以添加 Registry 的地址、访问用户名和密码。
    在这里插入图片描述
  2. 在 Images 栏目中点击 Pull an image 拉取 httpd:2.4.57 镜像。在这里插入图片描述

运行 Container

  1. 先点击上图 httpd 镜像右侧的 Run Image 箭头,然后在下图的界面中提供 Container name 为 apache-httpd-1,最后点击下方的 Start Container 按钮。
    在这里插入图片描述
  2. 点击 Containers 栏目中的 apache-httpd-1 右侧的下拉菜单,然后再点击 Open Browser。
    在这里插入图片描述
  3. 可以在浏览器中访问到运行在容器中的httpd页面。
    在这里插入图片描述
  4. 点击第2部的 Generate Kube 菜单,然后将生成的内容保存到本地 pod-httpd.yaml 文件中。
    在这里插入图片描述
  5. 停止 apache-httpd-1 容器运行。
  6. 在 Pods 栏目界面中点击右上方的 Play Kubernetes YAML 按钮,然后在下图的界面中为 Kubernetes YAML file 选择 pod-httpd.yaml 文件。
    在这里插入图片描述
  7. 在 Pods 栏目中可以看到运行的 Pod。最后可以刷新步骤 3 的浏览器,确认可以正常访问到 httpd 页面。
    在这里插入图片描述

将 Pod 部署到 Kubernetes

安装 Kind 扩展插件

  1. 在 Podman Desktop 窗口下方点击 Kind。
    在这里插入图片描述
  2. 在弹出窗口中点击 Yes 开始下载 Kind 软件。
    在这里插入图片描述
  3. 下载完在提示窗口中点击 Yes,然后提供管理员权限。
    在这里插入图片描述

创建 Kubernetes 集群

  1. 在 Settings 栏目中进入 Resources,然后点击 Kind 下面的 Create new 按钮。
    在这里插入图片描述

  2. 在 Create a Kind cluster 界面中点击 Create 按钮。
    在这里插入图片描述

  3. 在创建完 Kind 集群后可以看到 kind-cluster 已经是 Running 状态了,同时还能看到 Kubernetes endpoint 地址。此外在状态栏可以看到识别出的刚刚创建的 Kubernetes 集群名称。注意:如果没有识别出 Kubernetes 集群名称,可以尝试关闭并重启 Podman Desktop。
    在这里插入图片描述

  4. 运行命令,查看运行 Kubernetes 的容器。

$ podman ps
CONTAINER ID  IMAGE                                                                                           COMMAND     CREATED      STATUS      PORTS                                                                   NAMES
abbe67e830d3  docker.io/kindest/node@sha256:3966ac761ae0136263ffdb6cfd4db23ef8a83cba8a463690e98317add2c9ba72              5 hours ago  Up 5 hours  0.0.0.0:9090->80/tcp, 0.0.0.0:9443->443/tcp, 127.0.0.1:41535->6443/tcp  kind-cluster-control-plane
  1. 在浏览器中确认可以访问 Kubernetes endpoint。
    在这里插入图片描述
  2. 安装 kubectl 命令。
$ sudo yum install kubernetes-client
  1. 使用 ~/.kube/config 访问 Kubernetes,查看 Kubernetes 命名空间。
$ more ~/.kube/config

$ kubectl get namespace
NAME                 STATUS   AGE
default              Active   9m45s
kube-node-lease      Active   9m45s
kube-public          Active   9m45s
kube-system          Active   9m45s
local-path-storage   Active   9m34s
projectcontour       Active   9m32s

向 Kubernetes 部署 Pod

  1. 在 Containers 栏目中点击 apache-httpd-1 右侧下拉菜单的 Deploy to Kubernetes。
    在这里插入图片描述
  2. 在下图的 Deploy generated pod to Kubernetes 窗口中确认部署的 Kubernetes Context 和 Kubernetes namespace,最后点击 Deploy 按钮。
    在这里插入图片描述
  3. 部署成功后可以在下图界面中看到 pod 是 Running 状态了,最后点击 Done 按钮即可。
    在这里插入图片描述

访问 Kubernetes 中的 Pod

  1. 查看运行在 Kubernetes 中的 apache-httpd-1-pod 和 Service,然后记下 apache-httpd-1-pod-9000 服务的 CLUSTER-IP 地址。
$ kubectl get pod -n default
NAME                 READY   STATUS    RESTARTS   AGE
apache-httpd-1-pod   1/1     Running   0          37s
 
$ kubectl get svc -n default
NAME                      TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
apache-httpd-1-pod-9000   ClusterIP   10.96.119.200   <none>        9000/TCP   58s
kubernetes                ClusterIP   10.96.0.1       <none>        443/TCP    29m
  1. 点击 kind-cluster-control-plane 容器,进入容器内部。
    在这里插入图片描述
  2. 在容器中的 Terminal 中执行 “curl 10.96.119.200:9000”,然后确认可以访问到页面。
    在这里插入图片描述

视频

视频

参考

https://redhat-scholars.github.io/podman-desktop-tutorial/podman-desktop-tutorial/index.html

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐