CentOS-7-x86_64-DVD-1810
确保每台机器2G内存或以上
确保每台机器双核CPU或以上
确保所有机器网络互连
确认每个结点(<code>node</code>)的<code>hostname</code>,<code>MAC</code>,<code>product_uuid</code>唯一,<code>Kubernetes</code>用这些数值唯一确定集群中的结点
禁用<code>Swap</code>,以便<code>kubelet</code>正常工作
如果拥有多个网络适配器,无法通过默认路由访问<code>Kubernetes</code>组件,推荐给指定适配器添加到<code>Kubernetes</code>集群IP路由。
确保<code>br_netfilter</code>模块已加载,可通过执行``lsmod | grep br_netfilter<code>查看是否已加载,如果没有,可通过执行命令</code>sudo modprobe br_netfilter`加载
确保以下必备端口未被占用
Protocol
Direction
Port Range
Purpose
Used By
TCP
Inbound
6443*
Kubernetes API server
All
2379-2380
etcd server client API
kube-apiserver, etcd
10250
kubelet API
Self, Control plane
10251
kube-scheduler
Self
10252
kube-controller-manager
30000-32767
NodePort Services†
临时禁用
避免重启机器后失效,编辑<code>etc/fstab</code>,注释掉swap所在记录行
如果不禁用,运行<code>kubeadm</code>时,会提示如下错误
<code>Kubernetes</code>使用容器运行时在<code>Pod</code>中运行容器。Linux结点,<code>Kubernetes</code>使用<code>CRI</code>(Container Runtime Interface )同所选择的的容器运行时交互。
如果不指定运行时,<code>kubeadm</code>通过扫描熟知的<code>Unix</code>域名<code>socket</code>列表自动检测已安装容器运行时
以下列出了容器运行时及关联的的socket路径
如果检测到<code>Docker</code>和<code>containerd</code>同时存在,则优先使用<code>containerd</code>。除此之外,如果还存在其它运行时,则<code>kebeadm</code>会报错。
<code>kubelet</code>通过<code>dockershim</code> CRI实现<code>Docker</code>的集成
这里选择安装 <code>Docker</code> 19.03.9,安装过程略
<code>kubeadm</code>: 提供引导集群命令
<code>kubelet</code>: 提供在集群中运行所有机器组件的能力,以及其它事情,比如启动pod和容器
<code>kubectl</code>: 提供同集群交互的命令行工具
定义用于存放命令文件的目录
注意:<code>DOWNLOAD_DIR</code>目录必须可写
如果使用<code>Docker</code>,<code>kubeadm</code>会自动检测<code>cgroup</code>驱动,并在运行时,自动配置<code>/var/lib/kubelet/config.yaml</code>中对应驱动配置
如果使用其它<code>CRI</code>,需要传递<code>cgroupDriver</code> 给 <code>kubeadm init</code>,形如以下
查看更多,请查看 Using kubeadm init with a configuration file.
注意,仅<code>CRI</code>驱动不是<code>cgroupfs</code>时才需要传递<code>cgroupDriver</code> ,因为<code>cgroupfs</code>为kubelet的默认驱动。
作者:授客
公众号:授客的知识库
全国软件测试QQ交流群:7156436
Git地址:https://gitee.com/ishouke
友情提示:限于时间仓促,文中可能存在错误,欢迎指正、评论!
授课的知识库