暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

kubeadm在Linux下的安装

授客的知识库 2021-09-10
740

实践环境

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)

ProtocolDirectionPort RangePurposeUsed By
TCPInbound6443*Kubernetes API serverAll
TCPInbound2379-2380etcd server client APIkube-apiserver, etcd
TCPInbound10250kubelet APISelf, Control plane
TCPInbound10251kube-schedulerSelf
TCPInbound10252kube-controller-managerSelf

Worker node(s)

ProtocolDirectionPort RangePurposeUsed By
TCPInbound10250kubelet APISelf, Control plane
TCPInbound30000-32767NodePort Services†All

禁用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的默认驱动。


文章转载自授客的知识库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论