CentOS下Kubernetes集群架设(一)主机环境预设

  

虽然有农场主OS和CoreOS这类的发行版,但Kubernetes集群的安装也不是太麻烦,因此,还是先从最基本的实验下。以下是本人CentOS7.6上安装Kubernetes集群的笔记,并且分章节记录,持续更新....

  

Kubernetes主机环境预设

  

Kubernete集群的主机生产环境也有多种选择,如下:

  
      <李>方案一:三台或者五台主节点,分别安装全角色:ETCD,控制飞机;其他节点为容器计算机节点,分别安装角色:工人;李   <李>方案二:三台节点分别安装角色:ETCD;两台节点分别安装角色:控制平面;其他节点为容器计算机节点,分别安装角色:工人;李   
  

但我现在手上只有一台7代i7的笔记本,虽有16 g内存,但这双核四线程真不够看啊,单机和minikube安装先不考虑,等小型实验集群实验好后再逐个实现。我的笔记本是安装的fedora,使用kvm虚拟机虚拟了三个主机每个主机也就1个vcpu + 1 g内存,分别安装一个主节点和两个计算节点。
各个节点需要安装的kubernetes组件如下:

  
      <李>主节点:   
        <李> kube-apiserver李   <李> kube-controller-manager李   <李> kube-scheduler李   <李> kube-proxy李   <李>暂停李   <李> etcd李   <李> coredns李   李
      <李>从节点:   
        <李> kube-proxy李   <李>暂停李   <李>法兰绒(本次实验选定的网络插件)   李
      
  

1.2设置时间同步

  

如chrony,配置文件/etc/chrony.conf(内网需要配置时间服务器),服务启动使用systemctl命令。建议无论内网和能连接网络的环境都为集群配置时间同步服务器。

  

1.3配置DNS或者主机主机解析

  

在/etc/主机文件中配置集群的IP和主机名解析(同时可以减少DNS的解析时延)

  

1.4关闭防火墙

  

CentOS7上关闭防火墙

  
 <代码> # systemctl firewalld.service停止
  
  # systemctl禁用firewalld.service  
  

1.5关闭SELinux

  
 <代码> # setenforce 0  
  

同时配置时/etc/selinux/config文件

  
 <代码> # vim/etc/selinux/config
  …
  SELINUX=禁用
   
  

或者   

 <代码> # sed - i ' s@ ^ \ (SELINUX=\)。* @ \ 1 disabled@ '/etc/sysconfig/selinux  
  

1.6禁用交换设备

  

1.8 Kubernetes开始需要关闭系统交换交换分区,如果不关闭,则无法启动。
查看

  
 <代码> #免费- m  
  

临时关闭

  
 <代码> # swapoff -
  #回声”vm。swappiness=0”,祝辞的在/etc/sysctl.conf  
  

或者   

 <代码> # swapoff——,,sysctl - w vm.swappiness=0  
  

同时编辑配置文件/etc/fstab进行永久关闭,即注释挂载交换设备的行。

  

<强>注:本次实验由于资源有限没有关闭,但后续有解决方法(仅限于实验环境)

  

1.7启用ipv内核模块

  

kube-proxy支持iptables和ipv,如果条件满足,默认使用ipv,否则使用iptables。

  
 <代码>猫& lt; & lt; EOF祝辞/etc/sysctl.d/kubernetes.conf
  net.bridge。bridge-nf-call-ip6tables=1
  net.bridge。bridge-nf-call-iptables=1
  net.ipv4。ip_forward=1
  EOF
  modprobe br_netfilter
  sysctl - p/etc/sysctl.d/kubernetes。conf或者sysctl -系统 
  

由于ipv已经加入到了内核的主干,所以为kube-proxy开启ipv的前提需要加载以下的内核模块:

  
      <李> ip_vs李   <李> ip_vs_rr李   <李> ip_vs_wrr李   <李> ip_vs_sh李   <李> nf_conntrack_ipv4李   
  

执行以下脚本加载内核

  
 <代码>猫比;/etc/sysconfig/modules/ipvs.模块& lt; & lt; EOF
  # !/bin/bash
  modprobe——ip_vs
  modprobe——ip_vs_rr
  modprobe——ip_vs_wrr
  modprobe——ip_vs_sh
  modprobe——nf_conntrack_ipv4
  EOF
  
  chmod 755/etc/sysconfig/modules/ipvs.模块,,bash/etc/sysconfig/modules/ipvs.模块,,lsmod | grep - e ip_vs - e nf_conntrack_ipv4  
  

参考:https://github.com/kubernetes/kubernetes/blob/master/pkg/proxy/ipvs/README.md

  

上面脚本创建了的/etc/sysconfig/模块/ipv。模块文件,保证在节点重启后能自动加载所需模块。使用lsmod | grep - e ip_vs - e nf_conntrack_ipv4命令查看是否已经正确加载所需的内核模块。

  

接下来还需要确保各个节点上已经安装了ipset软件包。为了便于查看ipv的代理规则,最好安装一下管理工具ipvsadm。

CentOS下Kubernetes集群架设(一)主机环境预设