zoukankan      html  css  js  c++  java
  • 内网环境部署kubernetes应注意的问题

    部署思路是:master机器可以访问公网,其它机器都在内网,因此master机器有两张网卡,其它机器与master机器的内网网卡相联。

    一、网络配置

    master节点的网络配置

    # 机器 k8s-master, 此台机器除了作为 master 本身,还承担网关的功能
    # 访问公网的网卡为centos系统中的eth1 
    # 内网通信的网卡为Centos系统中的eth0 
    # 由于在 k8s-master 机器中, eth0为连接其它机器的内网网卡,所以这张网卡需要标为 ZONE=trusted,确保防火墙不干扰内网数据
     
    # eth1网卡配置
    TYPE=Ethernet
    DEVICE=eth1
    IPADDR=192.168.206.30
    NETMASK=255.255.255.0
    GATEWAY=192.168.206.1
    ONBOOT=yes
    BOOTPROTO=static
    NM_CONTROLLED=yes
    
     
    # eth0网卡配置
    TYPE=Ethernet
    DEVICE=eth0
    IPADDR=25.10.10.0
    NETMASK=255.255.0.0
    ZONE=trusted
    ONBOOT=yes
    BOOTPROTO=static
    NM_CONTROLLED=yes

    node节点的网络配置

    # 机器 k8s-node1,此台机器承担kubernetes节点服务,仅设置一张内网网卡eth0,GATEWAY设置为master节点的内网IP地址。
    # eth0网卡配置
    TYPE=Ethernet
    DEVICE=eth0
    IPADDR=25.10.10.1
    NETMASK=255.255.0.0
    GATEWAY=25.10.10.0
    ONBOOT=yes
    BOOTPROTO=static
    NM_CONTROLLED=yes

     注意:在配置node节点的网卡时,一定要把网关配置为master节点的内网IP地址,如上标红的部分,否则在calico组件构建kubernetes网络时会报错。

    二、设置kubeadm init配置文件(kubeadm.yaml)的参数

      kubeadm init操作会自动发现master节点的网卡设备,并且将其设置成默认网关。如果想使用另外的网卡设备,那么需要在执行kubeadm init命令之前修改配置文件,修改api.advertiseAddress和api.bindPort两个参数。

    api.advertiseAddress=25.10.10.0
    api.bindPort=6443

      这两个参数决定kubeadm join命令中的IP:port,api.advertiseAddress的ip地址必须设置为master节点的内网地址,不然node节点在执行kubeadm join命令的时候,会报错。

    三、部署calico组件的配置

    1、启/禁用 ip-ip

      目前官方提供的模板里,默认打开了ip-ip功能,该功能会在node上创建一个设备:tunl0,容器的网络数据会经过该设备被封装一个ip头再转发。这里,calico.yaml中通过修改calico-node的环境变量:CALICO_IPV4POOL_IPIP来实现ipip功能的开关:默认是Always,表示开启;Off表示关闭ipip; cross-subnet表示开启并支持跨子网,目前用不到这种类型。

    - name: CALICO_IPV4POOL_IPIP
      value: "always"

    2、部署:

      注意:部署前,要配置一个参数,让calico-node组件能够识别node的IP,node上可能有多块网卡,官方提供的yaml文件中,ip识别策略(IPDETECTMETHOD)没有配置,即默认为first-found,这会导致一个网络异常的ip作为nodeIP被注册,从而影响node-to-node mesh。我们可以修改成can-reach的策略,尝试连接某一个Ready的node的IP,以此选择出正确的IP。

    - name: IP_AUTODETECTION_METHOD
      value: can-reach=25.10.10.0
    - name: IP
      value: "autodetect"

      在官方提供的yaml文件中,添加如上两个参数设置,第一个参数一定要设置为master节点的内网IP,否则会导致创建的tunl0无法连通,从而导致跨节点的POD无法通信等问题。

  • 相关阅读:
    嵌入式硬件设计时所需考虑的几个问题
    MySQL网络配置
    MySQL数据库操作技术大全
    关于硬件芯片未用引脚的处理方法
    与嵌入式软件开发相关的一些硬件知识
    C语言-联合(union)
    AtCoder Regular Contest 101 D
    AtCoder Regular Contest 101 C
    AtCoder Regular Contest 102 C
    线性基学习
  • 原文地址:https://www.cnblogs.com/snooker/p/9964321.html
Copyright © 2011-2022 走看看