kubeadm 搭建 k8s
kubeadm 搭建 k8s
- 预先构建基础环境
- 搭建需要的运行时环境
以下使用的是 docker + cri-dockerd 的方案,明显区别在 sock 指定上,其他无差别
安装 k8s 组件
截至 2024-1-10 各个镜像站最新版本,目前官方最新 1.29.0,1.28.5,1.27.9
站点 | 1.29.x | 1.28.x | 1.27.x | 备注 |
---|---|---|---|---|
清华 | x | 1.28.2 | 1.27.6 | |
中科大 | x | 1.28.2 | 1.27.6 | |
华为云 | x | x | x | 目前最高版本 1.23.1 |
阿里云 | x | 1.28.2 | 1.27.6 | 提供了新的源,可与官方版本一致 |
腾讯云 | x | 1.28.2 | 1.27.6 |
配置软件源
RHEL系配置
配置安装源,阿里云新版
# 版本支持 1.24-1.29
release=1.28
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v${release}/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v${release}/rpm/repodata/repomd.xml.key
EOF
-
旧版配置方案
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
Debian系配置
apt update && apt install -y apt-transport-https
release=1.28
curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v${release}/deb/Release.key |
gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v${release}/deb/ /" |
tee /etc/apt/sources.list.d/kubernetes.list
安装应用
RHEL系
# 版本筛选,新版源,仅能筛选子版本
yum list --showduplicates kubeadm
# 安装应用,如果有版本要求,自行指定版本,如 kubeadm-1.28.1
yum install -y kubeadm kubectl kubelet
Debian系
apt-get update
apt-get install -y kubelet kubeadm kubectl
启用 kubelet,会报错,忽略,因为未初始化,无法加载
# 重启服务【这一步必需要做,会报错,先忽略】
systemctl daemon-reload
systemctl enable --now kubelet
其他配置
# 不能没有自动补全
kubectl completion bash > /etc/profile.d/kubectl_completion.sh
补充说明,kubelet 可能遇到报错,没报错不用改
# 修改 kubelet 配置,基于docker
cat > /etc/sysconfig/kubelet <<EOF
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd --container-runtime-endpoint=/run/cri-dockerd.sock"
EOF
# 修改 kubelet 配置,基于 containerd
cat >/etc/sysconfig/kubelet<<EOF
KUBELET_KUBEADM_ARGS="--container-runtime=remote --runtime-request-timeout=15m --container-runtime-endpoint=unix:///run/containerd/containerd.sock --cgroup-driver=systemd"
EOF
# 使用虚拟机部署,以上环境具备时,可关机,做个快照,基于快照克隆会是个好选择
# 高版本 VMware 会自行处理 mac 和 uuid
# 配置的 uuid 可删除,实际虽然一样,但是不影响使用,IP和MAC不同即可
集群管理
初始化
-
查看镜像信息
# 查看需要的镜像,官方源 kubeadm config images list # 查看镜像,阿里云 kubeadm config images list --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers
-
拉取镜像
kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers --cri-socket unix:///run/cri-dockerd.sock
-
手动初始化【方案一】
kubeadm init --image-repository registry.aliyuncs.com/google_containers --cri-socket unix:///run/cri-dockerd.sock
-
使用配置文件初始化【方案二】
# 导出配置文件 kubeadm config print init-defaults > kubeadm-config.yaml # 修改配置文件 advertiseAddress # 管理平面的IP,服务器主机IP地址 podSubnet # pod 子网 serviceSubnet # service 子网 kubernetesVersion # kubeadm 版本需对应 imageRepository # 更改为国内镜像 registry.cn-hangzhou.aliyuncs.com/google_containers criSocket # 修改对应的,如cri-docker,unix:///var/run/cri-dockerd.sock name # 改为主机名 #可能需要修改kubelet、cri-docker服务,修改后重新加载并重启 # 初始化 master01 kubeadm init --config kubeadm.yaml --upload-certs
正常情况,初始化完成,弹出对话框,按照对话框补全环境即可;如果有报错,调报错
-
成功初始化,配置环境
mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config export KUBECONFIG=/etc/kubernetes/admin.conf
网络组件安装
-
下载配置
calico_ver=3.27 wget -O calico.yaml -c https://mirror.ghproxy.com/https://github.com/projectcalico/calico/blob/release-v${calico_ver}/manifests/calico-typha.yaml
-
加载配置
kubectl apply -f calico.yaml
-
观察一手
watch kubectl get po -A
节点加入
kubeadm join 192.168.80.201:6443 \
--token am8ata.e77yd9wpdsc4tstt \
--discovery-token-ca-cert-hash sha256:be1f3d87d457358772de7bdea35aaafb790ada7d898eb5245b4e63dc719d6b00 \
--cri-socket unix:///var/run/cri-dockerd.sock --v=5
本文来自博客园,作者:虫祇,转载请注明原文链接:https://www.cnblogs.com/chongxs/p/18099064/kubeadm-install