內網環境部署kubernetes應注意的問題

部署思路是:master機器能夠訪問公網,其它機器都在內網,所以master機器有兩張網卡,其它機器與master機器的內網網卡相聯。node

 

1、網絡配置centos

master節點的網絡配置api

# 機器 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網絡時會報錯。spa

 

2、設置kubeadm init配置文件(kubeadm.yaml)的參數code

  kubeadm init操做會自動發現master節點的網卡設備,而且將其設置成默認網關。若是想使用另外的網卡設備,那麼須要在執行kubeadm init命令以前修改配置文件,修改api.advertiseAddress和api.bindPort兩個參數。blog

api.advertiseAddress=25.10.10.0
api.bindPort=6443

  這兩個參數決定kubeadm join命令中的IP:port,api.advertiseAddress的ip地址必須設置爲master節點的內網地址,否則node節點在執行kubeadm join命令的時候,會報錯。ip

 

3、部署calico組件的配置部署

一、啓/禁用 ip-ipkubernetes

  目前官方提供的模板裏,默認打開了ip-ip功能,該功能會在node上建立一個設備:tunl0,容器的網絡數據會通過該設備被封裝一個ip頭再轉發。這裏,calico.yaml中經過修改calico-node的環境變量:CALICO_IPV4POOL_IPIP來實現ipip功能的開關:默認是Always,表示開啓;Off表示關閉ipip; cross-subnet表示開啓並支持跨子網,目前用不到這種類型。

- name: CALICO_IPV4POOL_IPIP
  value: "always"

二、部署:

  注意:部署前,要配置一個參數,讓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沒法通訊等問題。

相關文章
相關標籤/搜索