分享

k8s笔记007-flannel部署

 涅槃沉殇 2018-01-05

1. 安装etcd
flannel使用etcd作为数据库,所以请提前安装好etcd,这里我们使用之前部署的etcd集群

2. 安装flannel
在node节点上安装flannel
从以下链接https://github.com/coreos/flannel/releases/download/v0.8.0/flannel-v0.8.0-linux-amd64.tar.gz下载flannel二进制包,将包中的flanneld和mk-docker-opts.sh文件复制到/usr/bin/目录下
赋予可执行权限
[root@k8s-node01 bin]# chmod +x /usr/bin/flanneld
[root@k8s-node01 bin]# chmod +x /usr/bin/mk-docker-opts.sh

3. 编辑systemd服务文件
[root@k8s-node01 bin]# vi /usr/lib/systemd/system/flanneld.service
[Unit]
Description=flanneld overlay address etcd agent
After=network.target
Before=docker.service

[Service]
Type=notify
EnvironmentFile=-/etc/sysconfig/flanneld
EnvironmentFile=-/etc/sysconfig/docker-network
ExecStart=/usr/bin/flanneld ${ETCD_ENDPOINTS} ${ETCD_PREFIX} ${FLANNEL_OPTIONS}
ExecStartPost=/usr/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker
Restart=on-failure

[Install]
WantedBy=multi-user.target
RequiredBy=docker.service

4. 编辑配置文件
[root@k8s-node01 bin]# vi /etc/sysconfig/flanneld
ETCD_ENDPOINTS="--etcd-endpoints=http://172.18.0.142:2379,http://172.18.0.143:2379,http://172.18.0.146:2379"
ETCD_PREFIX="--etcd-prefix=//network"

5. 在etcd中创建网络配置
[root@k8s-master01 k8s]# etcdctl set //network/config '{ "Network": "172.30.0.0/16" }'
{ "Network": "172.30.0.0/16" }

6. 停止docker服务及删除docker0网卡
如果有遗留的flannel网络设备,也需要一并删除
[root@k8s-node01 bin]# systemctl stop docker
[root@k8s-node01 bin]# ip link delete docker0

7. 修改docker的systemd服务配置
设置docker在flanneld之后启动,添加环境变量文件/run/flannel/docker,这个文件是flanneld启动后通过mk-docker-opts.sh生成的
[root@k8s-node01 bin]# cat /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.
After=network.target
Wants=docker-storage-setup.service
Requires=docker-cleanup.timer
Requires=flanneld.service

[Service]
Type=notify
NotifyAccess=all
KillMode=process
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
EnvironmentFile=-/run/flannel/docker
Environment=GOTRACEBACK=crash
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
ExecStart=/usr/bin/dockerd-current \
--add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
--default-runtime=docker-runc \
--exec-opt native.cgroupdriver=systemd \
--userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
$OPTIONS \
$DOCKER_STORAGE_OPTIONS \
$DOCKER_NETWORK_OPTIONS \
$ADD_REGISTRY \
$BLOCK_REGISTRY \
$INSECURE_REGISTRY
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
Restart=on-abnormal
MountFlags=slave

[Install]
WantedBy=multi-user.target

8. 启动docker服务
在启动docker时,会先自动启动flanneld,这是在docker的systemd配置文件中配置的
[root@k8s-node01 bin]# system restart docker.service

9. 查看docker0和flannel网卡的ip地址
此时应该两个网卡是同一个地址段
[root@k8s-node01 bin]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno16777728: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:29:0c:04 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.144/24 brd 172.18.0.255 scope global eno16777728
valid_lft forever preferred_lft forever
29: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
link/ether 02:42:d2:78:9c:5b brd ff:ff:ff:ff:ff:ff
inet 172.30.86.1/24 scope global docker0
valid_lft forever preferred_lft forever
30: flannel0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1472 qdisc pfifo_fast state UNKNOWN qlen 500
link/none
inet 172.30.86.0/16 scope global flannel0
valid_lft forever preferred_lft forever

10. 重启kubelet服务
[root@k8s-node01 bin]# systemctl restart kubelet

11. 测试不同node节点间docker0网桥ip互通

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多