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不同即可

集群管理

初始化

  1. 查看镜像信息

    # 查看需要的镜像,官方源
    kubeadm config images list
    # 查看镜像,阿里云
    kubeadm config images list --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers
    
  2. 拉取镜像

    kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers --cri-socket unix:///run/cri-dockerd.sock
    
  3. 手动初始化【方案一】

    kubeadm init --image-repository registry.aliyuncs.com/google_containers --cri-socket unix:///run/cri-dockerd.sock
    
  4. 使用配置文件初始化【方案二】

    # 导出配置文件
    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
    

网络组件安装

  1. 下载配置

    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
    
  2. 加载配置

    kubectl apply -f calico.yaml
    
  3. 观察一手

    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

posted @ 2024-03-27 14:17  虫祇  阅读(147)  评论(0编辑  收藏  举报