容器云架构实践-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


分享到:


相關文章: