kubernetes 內網節點部署筆記(一)

在Centos7上部署kubernetes時,碰到不少坑,特別在摸擬在內網部署時,有來自GFW的障礙,有來自Firewalld的阻塞,反正是各類不服,終於慢慢理順了思路,本身記錄一下,防止遺忘。
環境爲Centos7,  準備VMWare快照, 快照環境以下:
  • 安裝好 CentOS7node

    1
    2
    3
    4
    5
    6
    7
    yum -y install wget vim net-tools traceroute #安裝經常使用工具
    yum -y kubernetes flannel #安裝kubernetes組件及flannel網絡組件
    #如下爲kubernetes準備gcr鏡像
    systemctl start docker
    docker pull hub.c.163.com /combk8s/pause :0.8.0
    docker tag hub.c.163.com /combk8s/pause :0.8.0 gcr.io /google_containers/pause :0.8.0
    docker rmi hub.c.163.com /combk8s/pause :0.8.0
  • 關機制做快照docker

     


部署思路是:master機器能夠訪問公網,而且做爲網關,其它機器都在內網,所以master機器有兩張網卡,其它機器與master機器的內網網卡相聯
從快照中克隆4臺機器,配置以下:

第一臺機器 k8s-master,配置成爲訪問網關json

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 機器 k8s-master, 此臺機器除了做爲 master 自己,還承擔網關的職能
# VM中公網網卡鏈接方式:橋接, 對應centos系統中的網卡 eno16777736
# VM中私網網卡鏈接方式:僅主機模式,對應Centos系統中的網卡 eno33554984
# 因爲在 k8s-master 機器中, eno33554984 鏈接其它機器的內網網卡,因此這張網卡須要標爲 ZONE=trusted,確保防火牆不干擾內網數據
 
# eno16777736網卡配置
TYPE= "Ethernet"
NAME= "eno16777736"
UUID= "8b130f48-94d8-4d4c-a6b0-128a36448a6a"
DEVICE= "eno16777736"
IPADDR= "192.168.206.30"
PERFIX= "24"
GATEWAY= "192.168.206.1"
DNS1= "192.168.205.12"
ONBOOT= "yes"
 
# eno33554984網卡配置
TYPE= "Ethernet"
NAME= "eno33554984"
DEVICE= "eno33554984"
IPADDR= "192.168.127.1"
PERFIX= "24"
ONBOOT= "yes"
ZONE=trusted
 
#開啓 k8s-master的路由功能
echo "net.ipv4.ip_forward=1" >> /etc/sysctl .conf
sysctl -p
 
#容許SNAT轉發上網
firewall-cmd --permanent --zone=public --add-masquerade
firewall-cmd --reload


第二臺機器 k8s-etcd,安裝ETCD服務vim

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 機器 k8s-etcd,此臺機器承擔etcd存儲服務,僅有一張網卡
# VM中私網網卡鏈接方式:僅主機模式,對應Centos系統中的網卡 eno16777736
 
# eno16777736網卡配置
TYPE= "Ethernet"
NAME= "eno16777736"
DEVICE= "eno16777736"
IPADDR= "192.168.127.2"
PERFIX= "24"
GATEWAY= "192.168.127.1"
DNS1= "192.168.205.12"
ONBOOT= "yes"
 
#安裝etcd
yum -y install etcd
#修改ETCD配置
vim /etc/etcd/etcd .conf
ETCD_LISTEN_CLIENT_URLS= "http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS= "http://192.168.127.2:2379"
 
#接下來,爲flannel網絡產生配置文件,該配置文件用來設置kubernetes中虛擬子網的網段
vim flannel-config.json #文件內容以下
{
   "Network" : "10.0.0.0/16" ,
   "SubnetLen" :24,
   "Backend" :{
     "Type" : "vxlan" ,
     "VNI" :1
   }
}
 
#將配置文件存儲到ETCD對應的鍵上
etcdctl set atomic.io /network/config < flannel-config.json


第一臺機器 k8s-master,配置成爲Kube-mastercentos

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 機器 k8-master,此臺機器承擔kube-master服務
# kube-master服務主要包含如下組件
# 1. kube-apiserver
# 2. kube-controller-manager
# 3. kube-scheduler
# 4. flannel 網絡
 
# 首先來配置flannel網絡,使flannel網絡配置從etcd服務器讀取
vim /etc/sysconfig/flanneld
FLANNEL_ETCD= "http://192.168.127.2:2379" 
FLANNEL_ETCD_KEY= "/atomic.io/network"
# 啓動flannel網絡,若是以前已經啓動了docker,須要先關閉docker
systemctl enable flanneld
systemctl start flanneld
 
# 配置 kube-apiserver
vim /etc/kubernetes/apiserver
KUBE_API_ADDRESS= "--address=0.0.0.0"
KUBE_ETCD_SERVERS= "--etcd-servers=http://192.168.127.2:2379"
KUBE_SERVICE_ADDRESSES= "--service-cluster-ip-range=10.0.0.0/16"
KUBE_ADMISSION_CONTROL= "--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
# 因爲是部署在內網,因此KUBE_ADMISSION_CONTROL中去掉了ServiceAccount的鑑權方式
 
# 接下來啓動服務
systemctl enable kube-apiserver kube-controller-manager kube-scheduler
systemctl start kube-apiserver kube-controller-manager kube-scheduler


第三臺機器 k8s-node1,配置成爲Kubelet節點api

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 機器 k8s-node1,此臺機器承擔kubernetes節點服務,僅有一張網卡
# VM中私網網卡鏈接方式:僅主機模式,對應Centos系統中的網卡 eno16777736
# eno16777736網卡配置
TYPE= "Ethernet"
NAME= "eno16777736"
DEVICE= "eno16777736"
IPADDR= "192.168.127.3"
PERFIX= "24"
GATEWAY= "192.168.127.1"
DNS1= "192.168.205.12"
ONBOOT= "yes"
 
# 首先來配置flannel網絡,使flannel網絡配置從etcd服務器讀取
vim /etc/sysconfig/flanneld
FLANNEL_ETCD= "http://192.168.127.2:2379" 
FLANNEL_ETCD_KEY= "/atomic.io/network"
 
#hostname 配置
hostnamectl set - hostname k8s-node1
 
#kubernetes config 文件配置
vim /etc/kubernetes/config
KUBE_MASTER= "--master=http://192.168.127.1:8080"
   
#kubernetes kubelet 文件配置
vim /etc/kubernetes/kubelet
KUBELET_ADDRESS= "--address=0.0.0.0"
KUBELET_HOSTNAME= "--hostname-override=k8s-node1"
KUBELET_API_SERVER= "--api-servers=http://192.168.127.1:8080"
 
#啓動kubelet
systemctl enable docker kubelet
systemctl start docker kubelet


 

第四臺機器 k8s-node2,配置成爲Kubelet節點bash

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 機器 k8s-node2,此臺機器承擔kubernetes節點服務,僅有一張網卡
# VM中私網網卡鏈接方式:僅主機模式,對應Centos系統中的網卡 eno16777736
  
# eno16777736網卡配置
TYPE= "Ethernet"
NAME= "eno16777736"
DEVICE= "eno16777736"
IPADDR= "192.168.127.4"
PERFIX= "24"
GATEWAY= "192.168.127.1"
DNS1= "192.168.205.12"
ONBOOT= "yes"
  
# 首先來配置flannel網絡,使flannel網絡配置從etcd服務器讀取
vim /etc/sysconfig/flanneld
FLANNEL_ETCD= "http://192.168.127.2:2379"  
FLANNEL_ETCD_KEY= "/atomic.io/network"
  
#hostname 配置
hostnamectl set - hostname k8s-node2
  
#kubernetes config 文件配置
vim /etc/kubernetes/config
KUBE_MASTER= "--master=http://192.168.127.1:8080"
  
#kubernetes kubelet 文件配置
vim /etc/kubernetes/kubelet
KUBELET_ADDRESS= "--address=0.0.0.0"
KUBELET_HOSTNAME= "--hostname-override=k8s-node2"
KUBELET_API_SERVER= "--api-servers=http://192.168.127.1:8080"
  
#啓動kubelet
systemctl enable docker kubelet
systemctl start docker kubelet


驗證節點是否可用,在k8s-master上執行命令服務器

 

1
2
3
4
[root@k8s-master ~] # kubectl get node
NAME        STATUS    AGE
k8s-node1   Ready     3h
k8s-node2   Ready     3h


 
 
 
 



相關文章
相關標籤/搜索