ubuntu20.04部署k8s1.28(Ubuntu24可用)
ubuntu:20+
containerd:1.7+
ubuntu部署k8s-20250205
ubuntu20.04部署k8s
1主機列表
172.31.143.61
172.31.138.200
172.31.131.66
172.31.133.139
2具體步驟
2.1設置hostname和hosts文件
當前k8s分為1個控制節點和3個工作節點;
必須分別設置每個主機的hostname,修改每個主機的/etc/hosts
示例如下:
主機1上執行以下命令
sudo hostnamectl set-hostname k8s-test-master
主機2上執行以下命令
sudo hostnamectl set-hostname k8s-test-node1
主機3上執行以下命令
sudo hostnamectl set-hostname k8s-test-node2
主機4上執行以下命令
sudo hostnamectl set-hostname k8s-test-node3
再次在每臺主機上執行以下命令
cat << EOF | sudo tee -a /etc/hosts
172.31.143.61 k8s-test-master
172.31.138.200 k8s-test-node1
172.31.131.66 k8s-test-node2
172.31.133.139 k8s-test-node3
EOF
2.2主機初始化配置
#注意,在每臺主機上執行以下命令,完成初始化配置
# 交換分區
sudo sed -i 's/^\(.*swap.*\)$/#\1/g' /etc/fstab
swapoff -a
# 網絡內核模塊
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# 設置所需的 sysctl 參數,參數在重新啟動后保持不變
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
# 應用 sysctl 參數而不重新啟動
sudo sysctl --system
# k8s源
sudo apt-get update && sudo apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo systemctl enable kubelet --now
2.3安裝containerd
#注意,在每臺主機上安裝containerd
step 1: 安裝必要的一些系統工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安裝GPG證書
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 寫入軟件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
Step 4: 更新并安裝containerd
sudo apt-get -y update
sudo apt-get -y install containerd
2.4生成containerd默認配置文件
#注意,在每臺主機上執行以下命令
sudo mkdir /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's#registry.k8s.io/pause:3.8#registry.k8s.io/pause:3.9#g' /etc/containerd/config.toml
sudo sed -i 's#SystemdCgroup = false#SystemdCgroup = true#g' /etc/containerd/config.toml
#重啟containerd
sudo systemctl restart containerd
#登錄每臺主機,修改crictl配置文件,獲得containerd的sock信息,沒有該文件的話創建一個,示例crictl.yaml配置文件如下:
root@k8s-test-master:/home/ubuntu# cat /etc/crictl.yaml
runtime-endpoint: unix:///var/run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
pull-image-on-create: false
disable-pull-on-run: false
2.5部署k8s控制節點
#在k8s控制節點主機上執行以下命令
root@k8s-test-master:/home/ubuntu# kubeadm init --kubernetes-version=v1.28.2 --apiserver-advertise-address=172.31.143.61 --apiserver-bind-port=6443 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 --cri-socket=unix:///run/containerd/containerd.sock
#注意事項:apiserver-advertise-address需要使用本機上網卡的ip,否則的話會導致etcd綁定ip失敗啟動不了,從而apiserver也啟動不了;
#如果顯示以下信息,表示k8s控制節點部署成功
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 172.31.143.61:6443 --token 6dzoa4.lzo7vhhpe1w0c78g \
--discovery-token-ca-cert-hash sha256:6fc3b55ed45b46a8aabb2cae4562468e57927e5615d8957950b60a3183c5f554
#繼續在控制節點執行以下命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#為控制節點設置標簽
kubectl label nodes k8s-test-master k8s.kuboard.cn/role=etcd
#使用 kubectl部署flannel
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
2.6部署k8s工作節點
#登錄每個工作節點主機,執行以下命令,加入k8s集群
kubeadm join 172.31.143.61:6443 --token 6dzoa4.lzo7vhhpe1w0c78g \
--discovery-token-ca-cert-hash sha256:6fc3b55ed45b46a8aabb2cae4562468e57927e5615d8957950b60a3183c5f554
2.7驗證k8s集群
kubectl get node
kubectl get pod -A
crictl ps
2.8部署kuboard
#登錄控制節點主機,執行以下命令
kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
#使用的svc是nodeport,訪問時使用http://nodeportip:30080

浙公網安備 33010602011771號