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
posted @ 2025-04-02 18:42  A学无止境A  阅读(349)  评论(0)    收藏  举报