Kubernetes kubeadm在Linux下的安装

发表于:2021-9-16 09:33

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:授客    来源:腾讯云

#
Linux
分享:
  实践环境
  CentOS-7-x86_64-DVD-1810。

  开始之前
  ·确保每台机器2G内存或以上
  ·确保每台机器双核CPU或以上
  ·确保所有机器网络互连
  ·确认每个结点(node)的hostname,MAC,product_uuid唯一,Kubernetes用这些数值唯一确定集群中的结点
  ·禁用Swap,以便kubelet正常工作

  检查网络适配器
  如果拥有多个网络适配器,无法通过默认路由访问Kubernetes组件,推荐给指定适配器添加到Kubernetes集群IP路由。

  确保桥接通信(bridged traffic)对iptables可见
  确保br_netfilter模块已加载,可通过执行``lsmod | grep br_netfilter查看是否已加载,如果没有,可通过执行命令sudo modprobe br_netfilter`加载。

  检查必备端口
  确保以下必备端口未被占用。

  Control-plane node(s)

  Worker node(s)

  禁用Swap
  临时禁用
# swapoff -a

  避免重启机器后失效,编辑etc/fstab,注释掉swap所在记录行:
# vi /etc/fstab

#UUID=2a2ac056-92c2-4cb9-9525-0291498f3d62 swap                    swap    defaults        0 0

  如果不禁用,运行kubeadm时,会提示如下错误:
[ERROR Swap]: running with swap on is not supported. Please disable swap

  安装运行时
  Kubernetes使用容器运行时在Pod中运行容器。Linux结点,Kubernetes使用CRI(Container Runtime Interface )同所选择的的容器运行时交互。
  如果不指定运行时,kubeadm通过扫描熟知的Unix域名socket列表自动检测已安装容器运行时,以下列出了容器运行时及关联的的socket路径:
Docker/var/run/dockershim.sock
containerd/run/containerd/containerd.sock
CRI-O/var/run/crio/crio.sock

  如果检测到Docker和containerd同时存在,则优先使用containerd。除此之外,如果还存在其它运行时,则kebeadm会报错。
  kubelet通过dockershim CRI实现Docker的集成。这里选择安装 Docker 19.03.9,安装过程略。

  安装kubeadm, kubelet 和 kubectl
  ·kubeadm: 提供引导集群命令
  ·kubelet: 提供在集群中运行所有机器组件的能力,以及其它事情,比如启动pod和容器
  ·kubectl: 提供同集群交互的命令行工具

  安装CNI插件(为大多数pod网络所需)
CNI_VERSION="v0.8.2"
sudo mkdir -p /opt/cni/bin
curl -L "https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-amd64-${CNI_VERSION}.tgz" | sudo tar -C /opt/cni/bin -xz

  定义用于存放命令文件的目录:
DOWNLOAD_DIR=/usr/local/bin
sudo mkdir -p $DOWNLOAD_DIR

  注意:DOWNLOAD_DIR目录必须可写。

  安装crictl(为kubeadm/Kubelet CRI)所需)
CRICTL_VERSION="v1.17.0"
curl -L "https://github.com/kubernetes-sigs/cri-tools/releases/download/${CRICTL_VERSION}/crictl-${CRICTL_VERSION}-linux-amd64.tar.gz" | sudo tar -C $DOWNLOAD_DIR -xz

  安装kubeadm, kubelet 和 kubectl并添加kubelet系统服务
RELEASE="$(curl -sSL https://dl.k8s.io/release/stable.txt)"
cd $DOWNLOAD_DIR
sudo curl -L --remote-name-all https://storage.googleapis.com/kubernetes-release/release/${RELEASE}/bin/linux/amd64/{kubeadm,kubelet,kubectl}
sudo chmod +x {kubeadm,kubelet,kubectl}

RELEASE_VERSION="v0.4.0"
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service
sudo mkdir -p /etc/systemd/system/kubelet.service.d
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

  设置允许开机启动kubelet,并立即启动
systemctl enable --now kubelet

  配置供kubelet使用的cgroup驱动
  如果使用Docker,kubeadm会自动检测cgroup驱动,并在运行时,自动配置/var/lib/kubelet/config.yaml中对应驱动配置。如果使用其它CRI,需要传递cgroupDriver 给 kubeadm init,形如以下:
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: <value>

  查看更多,请查看 Using kubeadm init with a configuration file。
  注意,仅CRI驱动不是cgroupfs时才需要传递cgroupDriver ,因为cgroupfs为kubelet的默认驱动。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号