容器雲架構實踐-08

Kubernetes 網絡組件選型

Kubernetes 網絡模型有很多種 常用的有如下幾種: Caclio; Canal; Flannel; Kube-router。我們可以根據自己選擇一種適合自己的網絡模型使用。

選型是一個慎重的事情,我們先可以試用一下各種模式,然後在根據自己實際需求再選擇適合自己的。下面我分享給大家把這四種網絡的自動化安裝腳本。

Caclio

vim calico.sh

#!/bin/bash

## usage
usage()
{
cat<
Usage: sh $0 [OPTION]

optional arguments:
--calico_images_save 下載calico相關鏡像
--k8s_init_calico 安裝master節點,使用calico網絡
--install_calico 安裝calico網絡

e.g:
--- 安裝kubernetes Network Calico實例 ---
--- kubernetes master ---
sh $0 --calico_images_save
sh $0 --k8s_init_calico
export KUBECONFIG=/etc/kubernetes/admin.conf
sh $0 --install_calico
EOF
}

# 下載特定版本的calico的鏡像
calico_images_save()
{
docker pull quay.io/calico/typha:v0.7.4
docker pull quay.io/calico/node:v3.1.3
docker pull quay.io/calico/cni:v3.1.3
}

# –pod-network-cidr 參數安裝calico網絡時需要

# –kubernetes-version 不加的話會去請求公網查詢版本信息
k8s_init_calico()
{
kubeadm init --kubernetes-version v1.12.0 --pod-network-cidr=192.168.0.0/16
}

# 安裝calico網絡
install_calico()
{
kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml
kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml
sleep 10
}


###script start ###
case $1 in
--calico_images_save)
calico_images_save
;;
--k8s_init_calico)
k8s_init_calico
;;
--install_calico)
install_calico
;;
*)
usage
;;
esac

Canal

vim cannal.sh

#!/bin/bash
## usage
usage()
{
cat<
Usage: sh $0 [OPTION]

optional arguments:
--cannal_images_save 下載cannal相關鏡像
--k8s_init_cannal 安裝master節點,使用cannal網絡

--install_cannal 安裝cannal網絡

e.g:
--- 安裝kubernetes Network Cannal實例 ---
--- kubernetes master ---
sh $0 --cannal_images_save
sh $0 --k8s_init_cannal
export KUBECONFIG=/etc/kubernetes/admin.conf
sh $0 --install_cannal
EOF
}

# 下載特定版本的cannal的鏡像
cannal_images_save()
{
docker pull quay.io/calico/cni:v3.1.3
docker pull quay.io/coreos/flannel:v0.9.1
docker pull quay.io/calico/node:v3.1.3
}

# –pod-network-cidr 參數安裝cannal網絡時需要
# –kubernetes-version 不加的話會去請求公網查詢版本信息
k8s_init_cannal()
{
kubeadm init --kubernetes-version v1.12.0 --pod-network-cidr=10.244.0.0/16
}

# 安裝cannal網絡
install_cannal()
{
kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/canal/rbac.yaml
kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/canal/canal.yaml
sleep 10
}


###script start ###
case $1 in
--cannal_images_save)
cannal_images_save
;;
--k8s_init_cannal)
k8s_init_cannal
;;
--install_cannal)
install_cannal

;;
*)
usage
;;
esac

Flannel

vim flannel.sh

#!/bin/bash
## usage
usage()
{
cat<
Usage: sh $0 [OPTION]

optional arguments:
--k8s_bridge 開啟橋接網絡支持
--flannel_images_save 下載flannel相關鏡像
--k8s_init_flannel 安裝master節點,使用flannel網絡
--install_flannel 安裝flannel網絡

e.g:
--- 安裝kubernetes Network Flannel實例 ---
--- kubernetes master ---
sh $0 --k8s_bridge
sh $0 --flannel_images_save
sh $0 --k8s_init_flannel
export KUBECONFIG=/etc/kubernetes/admin.conf
sh $0 --install_flannel
EOF
}

# 開啟橋接網絡支持
k8s_bridge()
{
cat < /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

}

# 下載特定版本的flannel的鏡像
flannel_images_save()
{
docker pull quay.io/coreos/flannel:v0.10.0-amd64
docker pull quay.io/coreos/flannel:v0.10.0-arm64
docker pull quay.io/coreos/flannel:v0.10.0-arm
docker pull quay.io/coreos/flannel:v0.10.0-ppc64le
docker pull quay.io/coreos/flannel:v0.10.0-s390x

}

# –pod-network-cidr 參數安裝cannal網絡時需要
# –kubernetes-version 不加的話會去請求公網查詢版本信息
k8s_init_flannel()
{
kubeadm init --kubernetes-version v1.12.0 --pod-network-cidr=10.244.0.0/16
}

# 安裝flannel網絡
install_cannal()
{
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml
sleep 10
}


###script start ###
case $1 in
--k8s_bridge)
k8s_bridge
;;
--flannel_images_save)
flannel_images_save
;;
--k8s_init_flannel)
k8s_init_flannel
;;
--install_flannel)
install_flannel
;;
*)
usage
;;
esac

Kube-router

vim kube_router.sh

#!/bin/bash
## usage
usage()
{
cat<
Usage: sh $0 [OPTION]

optional arguments:
--k8s_bridge 開啟橋接網絡支持
--k8s_init 安裝master節點,使用Kube-router網絡


e.g:
--- 安裝kubernetes Network Kube-router實例 ---
--- kubernetes master ---
sh $0 --k8s_bridge
sh $0 --k8s_init_kube_router
export KUBECONFIG=/etc/kubernetes/admin.conf
sh $0 --install_kube_router

EOF
}

# 開啟橋接網絡支持
k8s_bridge()
{
cat < /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
}


# –pod-network-cidr 參數安裝kube_router網絡時需要
# –kubernetes-version 不加的話會去請求公網查詢版本信息

k8s_init_kube_router()
{
kubeadm init --kubernetes-version v1.12.0 --pod-network-cidr=172.10.0.0/16
}

# 安裝kube_router網絡
install_kube_router()
{
kubectl apply -f https://raw.githubusercontent.com/cloudnativelabs/kube-router/master/daemonset/kubeadm-kuberouter.yaml
sleep 10
}

###script start ###
case $1 in
--k8s_bridge)
k8s_bridge
;;
--k8s_init_kube_router)
k8s_init_kube_router
;;
--install_kube_router)
install_kube_router
;;
*)
usage
;;
esac
容器雲架構實踐-08


分享到:


相關文章: