4.kubernetes部署Flannel网络

发布时间:2018年06月08日 阅读:623 次

企业级kubernetes的部署

公司要新系统部署k8s应用,需要本地测试环境部署俩套,生产环境云上部署俩套k8s,互备模式,当一个升级更新维护时另一个来替代

部署 Flannel 网络

kubernetes 要求集群内各节点能通过 Pod 网段互联互通,本文档介绍使用 Flannel 在所有节点 (Master、Node) 上创建互联互通的 Pod 网段的步骤。

Kubernetes Pod的网络是这样创建的:

项目当前内置支持的网络插件有:calico flannel kube-router,部署其中一个即可!!!


flannel网络是在master及所有的node节点上需要部署的!!!


创建 TLS 秘钥和证书

etcd 集群启用了双向 TLS 认证,所以需要为 flanneld 指定与 etcd 集群通信的 CA 和秘钥。

创建 flanneld 证书签名请求:https://pan.baidu.com/s/1ncTSa-NcTEFilryWeoCjfw


vim  flanneld-csr.json

{
  "CN": "flanneld",
  "hosts": [],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "BeiJing",
      "L": "BeiJing",
      "O": "k8s",
      "OU": "System"
    }
  ]
}

生成 flanneld 证书和私钥:

$ cfssl gencert -ca=/etc/kubernetes/ssl/ca.pem \
  -ca-key=/etc/kubernetes/ssl/ca-key.pem \
  -config=/etc/kubernetes/ssl/ca-config.json \
  -profile=kubernetes flanneld-csr.json | cfssljson -bare flanneld
$ ls flanneld*flanneld.csr  flanneld-csr.json  flanneld-key.pem flanneld.pem
$ mv flanneld*.pem /etc/kubernetes/ssl

向 etcd 写入集群 Pod 网段信息

注意:本步骤只需在第一次部署 Flannel 网络时执行,后续在其它节点上部署 Flannel 时无需再写入该信息!

设置集群网络范围

etcdctl --endpoints=https://192.168.10.1:2379,https://192.168.10.2:2379,https://192.168.10.3:2379   \
--ca-file=/etc/kubernetes/ssl/ca.pem   \
--cert-file=/etc/kubernetes/ssl/flanneld.pem   \
--key-file=/etc/kubernetes/ssl/flanneld-key.pem   \
mkdir /kubernetes/network
etcdctl --endpoints=https://192.168.10.1:2379,https://192.168.10.2:2379,https://192.168.10.3:2379   \
--ca-file=/etc/kubernetes/ssl/ca.pem   \
--cert-file=/etc/kubernetes/ssl/flanneld.pem   \
--key-file=/etc/kubernetes/ssl/flanneld-key.pem    \
mk /kubernetes/network/config '{ "Network": "172.30.0.0/16", "Backend": { "Type": "vxlan", "VNI": 1 }}'

安装和配置 flanneld

wget  
tar  xf  flannel-v0.9.1-linux-amd64.tar.gz
cp   mk-docker-opts.sh  flanneld   /opt/kubernetes/


创建 flanneld 的 systemd unit 文件

vim  /etc/systemd/system/flanneld.service

[Unit]
Description=Flanneld overlay address etcd agent
After=network.target
After=network-online.target
Wants=network-online.target
After=etcd.service
Before=docker.service

[Service]
Type=notify
ExecStart=/opt/kubernetes/flanneld \
  -etcd-cafile=/etc/kubernetes/ssl/ca.pem \
  -etcd-certfile=/etc/kubernetes/ssl/flanneld.pem \
  -etcd-keyfile=/etc/kubernetes/ssl/flanneld-key.pem \
  -etcd-endpoints=https://192.168.10.1:2379,https://192.168.10.2:2379,https://192.168.10.3:2379 \
  -etcd-prefix=/kubernetes/network
ExecStartPost=/opt/kubernetes/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker
Restart=on-failure

[Install]
WantedBy=multi-user.target
RequiredBy=docker.service
启动 flanneld
$ systemctl daemon-reload
$ systemctl enable flanneld
$ systemctl start flanneld
$ systemctl status flanneld

检查分配给各 flanneld 的 Pod 网段信息

# 查看集群 Pod 网段(/16)
 etcdctl --endpoints=https://192.168.10.1:2379,https://192.168.10.2:2379,https://192.168.10.3:2379   --ca-file=/etc/kubernetes/ssl/ca.pem   --cert-file=/etc/kubernetes/ssl/flanneld.pem   --key-file=/etc/kubernetes/ssl/flanneld-key.pem   get /kubernetes/network/config

{ "Network": "172.30.0.0/16", "Backend": { "Type": "vxlan", "VNI": 1 }}

$ # 查看已分配的 Pod 子网段列表(/24)
[root@hp-001 opt]# etcdctl --endpoints=https://192.168.10.1:2379,https://192.168.10.2:2379,https://192.168.10.3:2379   --ca-file=/etc/kubernetes/ssl/ca.pem   --cert-file=/etc/kubernetes/ssl/flanneld.pem   --key-file=/etc/kubernetes/ssl/flanneld-key.pem   ls /kubernetes/network/subnets

/kubernetes/network/subnets/172.30.50.0-24

/kubernetes/network/subnets/172.30.22.0-24

/kubernetes/network/subnets/172.30.99.0-24

$ # 查看某一 Pod 网段对应的 flanneld 进程监听的 IP 和网络参数
etcdctl --endpoints=https://192.168.10.1:2379,https://192.168.10.2:2379,https://192.168.10.3:2379   --ca-file=/etc/kubernetes/ssl/ca.pem   --cert-file=/etc/kubernetes/ssl/flanneld.pem   --key-file=/etc/kubernetes/ssl/flanneld-key.pem   get /kubernetes/network/subnets/172.30.99.0-24

{"PublicIP":"192.168.10.3","BackendType":"vxlan","BackendData":{"VtepMAC":"c2:9b:90:61:93:a6"}}

Tag:kubernetes docker container
相关文章

发表评论: