k8s是一個非常龐大的元件,對新手不太友好,由於版本升級和環境問題常常安裝失敗。這裡記錄一下2024年3月29日使用最新的k8s的安裝和啟動流程。
我是在一臺虛擬機器中進行實驗的,當前的虛擬機器比較乾淨。先裝一個docker,這個比較容易,在docker官網可以找到安裝最新docker的教程。
k8s依賴一些kernel module
modprobe ip_vs modprobe ip_vs_rr modprobe ip_vs_wrr modprobe ip_vs_sh
關閉swap,不知道為啥k8s不喜歡swap。
swapoff -a
安裝kubeadm,kubelet,kubectl
sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl curl -fsSL https://dl.k8s.io/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl
修改containerd config。最新的k8s已經預設runtime為containerd了,使用containerd default config覆蓋之前的config,另外由於config設定了sandbox image為谷歌的映象源,改成aliyun的。
containerd config default > /etc/containerd/config.toml #change sandbox_image to registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9 systemctl restart containerd
至此前期的工作就結束了,嘗試啟動試試。
kubeadm init \ --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \ --kubernetes-version=v1.29.3 \ --pod-network-cidr=10.244.0.0/16 \ --service-cidr=10.96.0.0/12 # --apiserver-advertise-address=192.168.108.100 \
這裡是出錯高發區,在我的虛擬機器裡,apiserver總是啟動失敗,這裡不加apiserver相關的設定,單個節點是沒有影響的。
如果上述命令執行成功繼續執行下面的命令。
export KUBECONFIG=/etc/kubernetes/admin.conf
現在可以嘗試去啟動一個pod了。
# # Copyright (c) 2018 Intel Corporation # # SPDX-License-Identifier: Apache-2.0 # apiVersion: v1 kind: Pod metadata: name: hello-pod spec: containers: - name: hello-container image: docker.io/library/ubuntu:latest command: - sleep - "100s"
可以透過kubectl檢視pod。
kubectl describe pods
至此k8s第一次嘗試就結束了。繼續之後的學習吧。