網(wǎng)站建設(shè)和數(shù)據(jù)容量整合最新實(shí)時(shí)大數(shù)據(jù)
《OpenShift 4.x HOL教程匯總》
在 podman-desktop 1.2.1 + podman 4.4 環(huán)境中驗(yàn)證。
文章目錄
- 什么是 podman 和 podman-desktop
- 安裝 podman 和 podman-desktop 基本環(huán)境
- Image、Container 和 Pod 的基本操作
- 拉取 Image
- 運(yùn)行 Container
- 將 Pod 部署到 Kubernetes
- 安裝 Kind 擴(kuò)展插件
- 創(chuàng)建 Kubernetes 集群
- 向 Kubernetes 部署 Pod
- 訪問 Kubernetes 中的 Pod
- 視頻
什么是 podman 和 podman-desktop
- podman 是 RedHat 公司主導(dǎo)的一個(gè)免費(fèi)的開源容器項(xiàng)目,目標(biāo)是平替安全能力較差的 Docker。作為運(yùn)行容器的獨(dú)立環(huán)境,podman 目前已經(jīng)廣泛被用在 Linux、MacOS 或 Windows 環(huán)境中。尤其在 RHEL、CentOS、SUSE、Ubuntu 等 Linux 中,podman 已經(jīng)是默認(rèn)的容器運(yùn)行環(huán)境了。除了比 Docker 有更優(yōu)的安全運(yùn)行特性外,podman 還有很多其他特性。例如 podman 不但可以運(yùn)行標(biāo)準(zhǔn)容器,還可以像 Kubernetes 那樣運(yùn)行 Pod(但不能調(diào)度 Pod),因此可以作為容器應(yīng)用開發(fā)、測(cè)試和運(yùn)行的環(huán)境。
- podman desktop 是運(yùn)行 podman 的圖形化工具,可以讓對(duì)容器/Pod的操作更加容易。
安裝 podman 和 podman-desktop 基本環(huán)境
本文使用了運(yùn)行Fedora 38 桌面版的虛機(jī),其中缺省會(huì)自帶 podman 運(yùn)行環(huán)境。另外由于要在其中運(yùn)行 Kubernetes 集群,因此虛機(jī)內(nèi)存最少配置 6G。
- 查看 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
- 在 https://podman-desktop.io/downloads 頁(yè)面下載 tar.gz 形式的 podman-desktop 文件包。
- 解壓文件,然后運(yùn)行 podman-desktop。
$ tar -xvf podman-desktop-1.2.1.tar.gz
$ cd podman-desktop-1.2.1
$ podman-desktop
- 在初始界面中點(diǎn)擊下方的 Go to Podman Desktop 進(jìn)入正式界面。
Image、Container 和 Pod 的基本操作
拉取 Image
- 在 Setting 欄目中的 Registries 中可以添加 Registry 的地址、訪問用戶名和密碼。
- 在 Images 欄目中點(diǎn)擊 Pull an image 拉取 httpd:2.4.57 鏡像。
運(yùn)行 Container
- 先點(diǎn)擊上圖 httpd 鏡像右側(cè)的 Run Image 箭頭,然后在下圖的界面中提供 Container name 為 apache-httpd-1,最后點(diǎn)擊下方的 Start Container 按鈕。
- 點(diǎn)擊 Containers 欄目中的 apache-httpd-1 右側(cè)的下拉菜單,然后再點(diǎn)擊 Open Browser。
- 可以在瀏覽器中訪問到運(yùn)行在容器中的httpd頁(yè)面。
- 點(diǎn)擊第2部的 Generate Kube 菜單,然后將生成的內(nèi)容保存到本地 pod-httpd.yaml 文件中。
- 停止 apache-httpd-1 容器運(yùn)行。
- 在 Pods 欄目界面中點(diǎn)擊右上方的 Play Kubernetes YAML 按鈕,然后在下圖的界面中為 Kubernetes YAML file 選擇 pod-httpd.yaml 文件。
- 在 Pods 欄目中可以看到運(yùn)行的 Pod。最后可以刷新步驟 3 的瀏覽器,確認(rèn)可以正常訪問到 httpd 頁(yè)面。
將 Pod 部署到 Kubernetes
安裝 Kind 擴(kuò)展插件
- 在 Podman Desktop 窗口下方點(diǎn)擊 Kind。
- 在彈出窗口中點(diǎn)擊 Yes 開始下載 Kind 軟件。
- 下載完在提示窗口中點(diǎn)擊 Yes,然后提供管理員權(quán)限。
創(chuàng)建 Kubernetes 集群
-
在 Settings 欄目中進(jìn)入 Resources,然后點(diǎn)擊 Kind 下面的 Create new 按鈕。
-
在 Create a Kind cluster 界面中點(diǎn)擊 Create 按鈕。
-
在創(chuàng)建完 Kind 集群后可以看到 kind-cluster 已經(jīng)是 Running 狀態(tài)了,同時(shí)還能看到 Kubernetes endpoint 地址。此外在狀態(tài)欄可以看到識(shí)別出的剛剛創(chuàng)建的 Kubernetes 集群名稱。注意:如果沒有識(shí)別出 Kubernetes 集群名稱,可以嘗試關(guān)閉并重啟 Podman Desktop。
-
運(yùn)行命令,查看運(yùn)行 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
- 在瀏覽器中確認(rèn)可以訪問 Kubernetes endpoint。
- 安裝 kubectl 命令。
$ sudo yum install kubernetes-client
- 使用 ~/.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
- 在 Containers 欄目中點(diǎn)擊 apache-httpd-1 右側(cè)下拉菜單的 Deploy to Kubernetes。
- 在下圖的 Deploy generated pod to Kubernetes 窗口中確認(rèn)部署的 Kubernetes Context 和 Kubernetes namespace,最后點(diǎn)擊 Deploy 按鈕。
- 部署成功后可以在下圖界面中看到 pod 是 Running 狀態(tài)了,最后點(diǎn)擊 Done 按鈕即可。
訪問 Kubernetes 中的 Pod
- 查看運(yùn)行在 Kubernetes 中的 apache-httpd-1-pod 和 Service,然后記下 apache-httpd-1-pod-9000 服務(wù)的 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
- 點(diǎn)擊 kind-cluster-control-plane 容器,進(jìn)入容器內(nèi)部。
- 在容器中的 Terminal 中執(zhí)行 “curl 10.96.119.200:9000”,然后確認(rèn)可以訪問到頁(yè)面。
視頻
視頻