k8s的安裝與啟動

半山随笔發表於2024-03-29

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第一次嘗試就結束了。繼續之後的學習吧。

相關文章