Kubernetes(k8s)安装网络插件是必须的,因为默认情况下 k8s 集群中的 Pod 是不能互相通信的。以下是安装网络插件的步骤:
选择一款网络插件,比较常用的有 Flannel、Calico、Weave Net 等,这里以 Flannel 为例。
在 k8s 的 Master 节点上下载并安装 flannel:
$ wget https://github.com/coreos/flannel/releases/download/v0.14.0/flannel-v0.14.0-linux-amd64.tar.gz
$ tar -zxvf flannel-v0.14.0-linux-amd64.tar.gz
$ cd flannel-v0.14.0-linux-amd64/
$ sudo cp flanneld /usr/local/bin/
$ sudo cp mk-docker-opts.sh /usr/local/bin/
- 创建 flannel 的配置文件
/etc/sysconfig/flanneld
:
# Flanneld configuration options
# etcd url location. Point this to the server where etcd runs
FLANNEL_ETCD_ENDPOINTS="http://127.0.0.1:2379"
# etcd config key. This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_PREFIX="/kubernetes/network"
# Any additional options that you want to pass
FLANNEL_OPTIONS="-iface=enp0s8"
其中,FLANNEL_ETCD_ENDPOINTS
指定 etcd 的地址和端口号,FLANNEL_ETCD_PREFIX
指定 flannel 在 etcd 中存储的前缀,FLANNEL_OPTIONS
指定 flannel 的参数,这里 -iface=enp0s8
表示 flannel 使用 enp0s8 网卡。
- 创建 flannel systemd unit 文件
/usr/lib/systemd/system/flanneld.service
:
[Unit]
Description=Flanneld overlay address etcd agent
After=network.target
Before=docker.service
[Service]
EnvironmentFile=/etc/sysconfig/flanneld
ExecStart=/usr/local/bin/flanneld --ip-masq $FLANNEL_OPTIONS
ExecStartPost=/usr/local/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker
Restart=on-failure
[Install]
WantedBy=multi-user.target
RequiredBy=docker.service
- 启动 flannel 服务并设置开机自启:
$ sudo systemctl daemon-reload
$ sudo systemctl enable flanneld
$ sudo systemctl start flanneld
在 k8s 节点上安装 docker。注意,docker 版本要与当前 k8s 版本兼容。
在 k8s 节点上下载并安装 kubelet、kubectl 和 kubeadm,并配置 kubelet:
$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16
其中,--pod-network-cidr
指定 Pod 网络的 IP 地址段。
- 安装 flannel 插件:
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.14.0/Documentation/kube-flannel.yml
- 验证网络插件是否正常工作:
$ kubectl get pods --all-namespaces