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号