Kubernetes 舊版文件
tags: Kubernetes
category: DevOps
description: Kubernetes 舊版文件
created_at: 2026/01/16 12:20:00

事前準備
- 安裝好
git - 準備好容器的執行環境,我們這裡採用
docker - 裝好
wsl或是你本身就有shell環境,如果有make指令就更好了。或是你乾脆跑一個linux的虛擬機器也可以,或是跑一個container掛載進去也行。
前言
在寫前一篇安裝筆記的時候為了多做一點功課,也翻了一些書籍來參考,但是大多對於安裝其實都沒有說明細節,於是我就很好奇到底為什麼書上和文件上有對不到的地方,然後我就先照著官方最新版的去操作,發現好像也沒什麼特別的問題。
我本來以為說不定會踩到奇怪的坑,所以書上才會多加一些參數(?)
總之,這一篇的目的就是用容器化的方式快速的在本地去啟動舊版的 kubernetes 官方文件,因為官方上面只有部署前幾個版本的文件,有時我們可能需要更舊版的文件,那就只能自己去部署本地的版本了。
快速開始
官方的文件網站 repo: https://github.com/kubernetes/website
首先我們先把這個倉庫 clone 下來
git clone https://github.com/kubernetes/website
接著我們可以看到他有多個和版本相關的 branches 和 tags
git branch -a | grep release
會看到
remotes/origin/release-1.10
remotes/origin/release-1.11
remotes/origin/release-1.12
remotes/origin/release-1.13
remotes/origin/release-1.14
remotes/origin/release-1.15
remotes/origin/release-1.16
remotes/origin/release-1.17
remotes/origin/release-1.18
remotes/origin/release-1.19
remotes/origin/release-1.20
remotes/origin/release-1.21
remotes/origin/release-1.22
remotes/origin/release-1.23
remotes/origin/release-1.24
remotes/origin/release-1.25
remotes/origin/release-1.26
remotes/origin/release-1.27
remotes/origin/release-1.28
remotes/origin/release-1.29
remotes/origin/release-1.30
remotes/origin/release-1.31
remotes/origin/release-1.32
remotes/origin/release-1.33
remotes/origin/release-1.34
remotes/origin/release-1.4
remotes/origin/release-1.5
remotes/origin/release-1.6
remotes/origin/release-1.7
remotes/origin/release-1.8
remotes/origin/release-1.9
可以依照你的需求去做切換,假設我們這邊想看 v1.24 的舊版文件:
git checkout release-1.24
接著我們需要 sub-module 也更新下來:
git submodule update --init --recursive --depth 1
接著如果你有 make 指令的話,可以直接使用 make 來啟動文件網站:
make container-serve
如果順利的話,到這邊就完成了,接著打開瀏覽器輸入 http://localhost:1313 就可以看到舊版的 kubernetes 文件網站了。
但,如果沒有 make 指令的話,請繼續往下看。
沒有 make 指令怎麼辦?
參考 Makefile 我們可以手動拼湊出使用的 image 名稱和最少需要執行的指令。
以下以 v1.24 為例
Makefile 的前幾行長這樣:
HUGO_VERSION = $(shell grep ^HUGO_VERSION netlify.toml | tail -n 1 | cut -d '=' -f 2 | tr -d " \"\n")
NODE_BIN = node_modules/.bin
NETLIFY_FUNC = $(NODE_BIN)/netlify-lambda
# The CONTAINER_ENGINE variable is used for specifying the container engine. By default 'docker' is used
# but this can be overridden when calling make, e.g.
# CONTAINER_ENGINE=podman make container-image
CONTAINER_ENGINE ?= docker
IMAGE_REGISTRY ?= gcr.io/k8s-staging-sig-docs
IMAGE_VERSION=$(shell scripts/hash-files.sh Dockerfile Makefile | cut -c 1-12)
CONTAINER_IMAGE = $(IMAGE_REGISTRY)/k8s-website-hugo:v$(HUGO_VERSION)-$(IMAGE_VERSION)
CONTAINER_RUN = "$(CONTAINER_ENGINE)" run --rm --interactive --tty --volume "$(CURDIR):/src"
可以看出我們需要的 CONTAINER_IMAGE 是由 IMAGE_REGISTRY、HUGO_VERSION 和 IMAGE_VERSION 三個部分組成的。
IMAGE_REGISTRY是固定的gcr.io/k8s-staging-sig-docsHUGO_VERSION是從netlify.toml裡面抓取的,我們可以肉眼去看,或是直接執行指令,可以得到0.101.0IMAGE_VERSION是透過scripts/hash-files.sh這個指令去計算出來的,我們可以直接執行這個指令來取得,結果是215aaa9df947。
所以我們最終的 CONTAINER_IMAGE 就是:
gcr.io/k8s-staging-sig-docs/k8s-website-hugo:v0.101.0-215aaa9df947
接著我們可以參考 Makefile 裡面 container-serve 的指令,然後我這裡把它做一點瘦身:
docker run --rm -it -v $PWD:/src -p 1313:1313 \
gcr.io/k8s-staging-sig-docs/k8s-website-hugo:v0.101.0-215aaa9df947 \
hugo server --bind 0.0.0.0
接著你就可以在 http://localhost:1313 看到舊版的 kubernetes 文件網站了。
可能會遇到的問題
某些版本(比較舊)的文件,可能官方提供的 image 存取不到,這時可以使用其他的 hugo image 來替代,或是反正只是文件性質的東西,乾脆使用新版的文件提供的 image 來 build 也行。 (反正目的只是要看到文件內容)
例如我們要跑 v1.10 的文件,但是官方的舊版 image 已經存取不到了,我們可以一樣使用剛才的 k8s-website-hugo:v0.101.0-215aaa9df947 去跑。
如果真的碰到了什麼問題,那麼再來處理也不遲。
結語
透過這個方式,我們就可以快速的在本地啟動舊版的 kubernetes 文件網站。
後來我也成功的在舊版的文件看到了書上在安裝 k8s 時的設定,確實存在於舊版的官方文件中。
只是新版的文件就沒有在提及那些設定了,因為我們在安裝其他套件以及啟用模組時,已經幫忙自動啟用了那些設定。