使用kubeadm部署k8s在ubuntu22.04
·
初始化(所有节点都执行)
更新系统
sudo apt update
禁用交换分区
sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstab
配置主机名(按节点设置)
sudo hostnamectl set-hostname k8s-master
sudo hostnamectl set-hostname k8s-node01
sudo hostnamectl set-hostname k8s-node02
cat /etc/hostname
添加主机解析
sudo tee -a /etc/hosts << EOF
192.168.50.200 k8s-master
192.168.50.201 k8s-node01
192.168.50.202 k8s-node02
EOF
配置内核参数
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
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
sudo sysctl --system
安装容器运行时(containerd)(所有节点安装)
安装基础工具
sudo apt install -y ca-certificates curl gnupg lsb-release
下载阿里云镜像的 Docker GPG 密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
添加阿里云的 Docker 仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
更新并安装 containerd
sudo apt update
# 查看可以安装的版本
sudo apt-cache madison containerd.io
# 安装指定版本
sudo apt install -y containerd.io=1.7.27-1
# 查看安装的版本
dpkg -l | grep containerd
containerd --version
配置 containerd
containerd config default | sudo tee /etc/containerd/config.toml
grep SystemdCgroup /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd
sudo systemctl enable containerd
锁定版本(防止自动升级)
# 锁定不自动升级
sudo apt-mark hold containerd.io
# 查看锁定状态
sudo apt-mark showhold
# 取消锁定(如果需要升级)
sudo apt-mark unhold containerd.io
安装kubeadm kubelet kubectl
所有节点都需要安装
下载 Kubernetes 密钥(阿里云镜像)
curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-aliyun.gpg
添加仓库
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-aliyun.gpg] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | \
sudo tee /etc/apt/sources.list.d/kubernetes-aliyun.list
执行的命令截图

sudo apt update
# 查看最新的5个版本
apt-cache madison kubeadm | head -5
apt-cache madison kubelet | head -5
apt-cache madison kubectl | head -5
# kubectl不用在节点安装
sudo apt install -y kubelet=1.28.* kubeadm=1.28.* kubectl=1.28.*
sudo apt-mark hold kubelet kubeadm kubectl
# 查看锁定版本的应用
sudo apt-mark showhold
# 启用 kubelet
sudo systemctl enable --now kubelet
下载镜像(如果有外网忽略此步骤)
查看需要的镜像
kubeadm config images list --kubernetes-version=v1.28.0

找个有外网的机器下载镜像
sudo ctr images pull registry.k8s.io/kube-apiserver:v1.28.0
sudo ctr images pull registry.k8s.io/kube-controller-manager:v1.28.0
sudo ctr images pull registry.k8s.io/kube-scheduler:v1.28.0
sudo ctr images pull registry.k8s.io/kube-proxy:v1.28.0
sudo ctr images pull registry.k8s.io/pause:3.9
sudo ctr images pull registry.k8s.io/etcd:3.5.9-0
sudo ctr images pull registry.k8s.io/coredns/coredns:v1.10.1
打包镜像
sudo ctr images export k8s-v1.28.0-images.tar \
registry.k8s.io/kube-apiserver:v1.28.0 \
registry.k8s.io/kube-controller-manager:v1.28.0 \
registry.k8s.io/kube-scheduler:v1.28.0 \
registry.k8s.io/kube-proxy:v1.28.0 \
registry.k8s.io/pause:3.9 \
registry.k8s.io/etcd:3.5.9-0 \
registry.k8s.io/coredns/coredns:v1.10.1
scp镜像到master机器
scp k8s-v1.28.0-images.tar root@192.168.0.200:/tmp/
在master机器加载镜像 需要加载到 k8s.io 的命名空间
sudo ctr -n k8s.io images import /tmp/k8s-v1.28.0-images.tar
# 查看 k8s.io 命名空间的镜像
ctr -n k8s.io images ls
初始化 Master 节点
sudo kubeadm init \
--pod-network-cidr=172.16.0.0/16 \
--kubernetes-version=v1.28.0 --v=5
报错如下图

journalctl -xeu kubelet|grep failed |grep pause|head
查看报错是去找 registry.k8s.io/pause:3.8 这个镜像

# 修改为 3.9 版本的镜像 registry.k8s.io/pause:3.9
vim /etc/containerd/config.toml
sudo systemctl restart containerd
清理旧的 kubeadm 配置
kubeadm reset -f
初始化master
sudo kubeadm init \
--pod-network-cidr=172.16.0.0/16 \
--kubernetes-version=v1.28.0 --v=5
出现这个就代表 master 已经成功

执行下面这个 就可以使用 kubectl 命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

node节点加入集群
这个命令是根据自己上面输出的复制出来的
kubeadm join 192.168.0.200:6443 --token x6wu15.i63jhd03nuoyutqs \
--discovery-token-ca-cert-hash sha256:c825b3f01d0616441f0a98abcf575287756b5e973b88183c9c59a099044ea4c6
如果找不到token 可以用下面命令生成
kubeadm token create --print-join-command

安装网络插件
查看集群配置的pod网段
cat /etc/kubernetes/manifests/kube-controller-manager.yaml | grep cluster-cidr

下载网络插件
wget https://github.com/flannel-io/flannel/releases/download/v0.27.4/kube-flannel.yml
修改为集群初始化的pod网段
sed -i 's#10.244.0.0/16#172.16.0.0/16#g' kube-flannel.yml
kubectl apply -f kube-flannel.yml


更多推荐


所有评论(0)