From fe8f31af919236af29d82cb47a1f0d823b178540 Mon Sep 17 00:00:00 2001 From: lIuDuI <1693291525@qq.com> Date: Fri, 15 Mar 2019 23:34:59 +0800 Subject: [PATCH] ZH-trans: add flannel_multi_node_cluster.md (#13195) * ZH-trans: add flannel_multi_node_cluster.md * Update flannel_multi_node_cluster.md * Update flannel_multi_node_cluster.md --- .../fedora/flannel_multi_node_cluster.md | 332 ++++++++++++++++++ 1 file changed, 332 insertions(+) create mode 100644 content/zh/docs/getting-started-guides/fedora/flannel_multi_node_cluster.md diff --git a/content/zh/docs/getting-started-guides/fedora/flannel_multi_node_cluster.md b/content/zh/docs/getting-started-guides/fedora/flannel_multi_node_cluster.md new file mode 100644 index 0000000000000..634167ccc4c21 --- /dev/null +++ b/content/zh/docs/getting-started-guides/fedora/flannel_multi_node_cluster.md @@ -0,0 +1,332 @@ +--- +reviewers: +- dchen1107 +- erictune +- thockin +title: Fedora (多节点) +--- + + + +{{< toc >}} + + +本文档描述了如何在多个主机上部署 Kubernetes 来建立一个多节点集群和 flannel 网络。遵循 fedora 入门指南设置 1 个主节点 (fed-master) + 和 2 个或更多节点。确保所有节点具有不同的名称(fed-node1、fed-node2 等等)和标签(fed-node1-label、fed-node2-label 等等),以避免 +任何冲突。还要确保 Kubernetes 主节点主机正在运行 etcd、kube-controller-manager、kube-scheduler 和 kube-apiserver 服务,节点正在 + 运行 docker、kube-proxy 和 kubelet 服务。现在在 Kubernetes 节点上安装 flannel。每个节点上的 flannel 配置 docker 使用的 overlay 网络。 + Flannel 在每个节点上运行,以设置一个唯一的 class-C 容器网络。 + + + +## 前提条件 + + +安装 Fedora 您需要两台或更多机器。 + + + +## 主节点设置 + + + +**在 Kubernetes 主节点上执行以下命令** + +* 在您当前的目录上的 fed-master 中通过创建一个 `flannel-config.json` 来配置 flannel。Flannel 在其他 overlay 网络后端选项中提供 udp 和 vxlan 。在本指南中,我们选择基于内核的 vxlan 后端。json 的内容为: + +```json +{ + "Network": "18.16.0.0/16", + "SubnetLen": 24, + "Backend": { + "Type": "vxlan", + "VNI": 1 + } +} +``` + +{{< note >}} + + +选择一个不在公共 IP 地址范围内的 IP 范围。 + +{{< /note >}} + + +将配置添加到 fed-master 上的 etcd 服务器。 + +```shell +etcdctl set /coreos.com/network/config < flannel-config.json +``` + + + +* 验证 fed-master 上的 etcd 服务器中是否存在该密钥。 + +```shell +etcdctl get /coreos.com/network/config +``` + + + +## 节点设置 + + + +**在所有 Kubernetes 节点上执行以下命令** + + + +安装 flannel 包 + +```shell +# dnf -y install flannel +``` + + + +编辑 flannel 配置文件 /etc/sysconfig/flanneld,如下所示: + + + +```shell +# Flanneld 配置选项 + +# etcd url 位置,将此指向 etcd 运行的服务器 +FLANNEL_ETCD="http://fed-master:2379" + +# etcd 配置的键。这是 flannel 查询的配置键 +# 用于地址范围分配 +FLANNEL_ETCD_KEY="/coreos.com/network" + +# 您想要传递的任何附加选项 +FLANNEL_OPTIONS="" +``` + +{{< note >}} + + +默认情况下,flannel 使用默认路由的接口。如果您有多个接口并且想要使用默认路由以外的接口,则可以将 "-iface=" 添加到 FLANNEL_OPTIONS。有关其他选项,请在命令行上运行 `flanneld --help`。 + +{{< /note >}} + + +启用 flannel 服务。 + +```shell +systemctl enable flanneld +``` + + +如果 docker 没有运行,那么启动 flannel 服务就足够了,跳过下一步。 + +```shell +systemctl start flanneld +``` + + +如果 docker 已经运行,则停止 docker,删除 docker bridge(docker0),启动 flanneld 并重新启动 docker,如下所示。另一种方法是重启系统(systemctl reboot)。 + +```shell +systemctl stop docker +ip link delete docker0 +systemctl start flanneld +systemctl start docker +``` + + + +## 测试集群和 flannel 配置 + + +现在检查节点上的接口。请注意,现在有一个 flannel.1 接口,docker0 和 flannel.1 接口的 ip 地址在同一个网络中。您会注意到 docker0 在上面配置的 IP 范围之外的每个 Kubernetes 节点上分配了一个子网(18.16.29.0/24,如下所示)。 正常运行的输出应如下所示: + + +```shell +# ip -4 a|grep inet + inet 127.0.0.1/8 scope host lo + inet 192.168.122.77/24 brd 192.168.122.255 scope global dynamic eth0 + inet 18.16.29.0/16 scope global flannel.1 + inet 18.16.29.1/24 scope global docker0 +``` + + +从集群中的任何节点,通过 curl 向 etcd 服务器发出查询来检查集群成员(仅显示部分输出 `grep -E "\{|\}|key|value`)。如果您设置了 1 个主节点和 3 个节点集群,您应该会看到每个节点都有一个块,显示分配给它们的子网。您可以通过输出中列出的 MAC 地址(VtepMAC)和 IP 地址(公共 IP) 将这些子网关联到每个节点。 + +```shell +curl -s http://fed-master:2379/v2/keys/coreos.com/network/subnets | python -mjson.tool +``` + +```json +{ + "node": { + "key": "/coreos.com/network/subnets", + { + "key": "/coreos.com/network/subnets/18.16.29.0-24", + "value": "{\"PublicIP\":\"192.168.122.77\",\"BackendType\":\"vxlan\",\"BackendData\":{\"VtepMAC\":\"46:f1:d0:18:d0:65\"}}" + }, + { + "key": "/coreos.com/network/subnets/18.16.83.0-24", + "value": "{\"PublicIP\":\"192.168.122.36\",\"BackendType\":\"vxlan\",\"BackendData\":{\"VtepMAC\":\"ca:38:78:fc:72:29\"}}" + }, + { + "key": "/coreos.com/network/subnets/18.16.90.0-24", + "value": "{\"PublicIP\":\"192.168.122.127\",\"BackendType\":\"vxlan\",\"BackendData\":{\"VtepMAC\":\"92:e2:80:ba:2d:4d\"}}" + } + } +} +``` + + +从所有节点,查看 `/run/flannel/subnet.env` 文件。这个文件是由 flannel 自动生成的。 + +```shell +# cat /run/flannel/subnet.env +FLANNEL_SUBNET=18.16.29.1/24 +FLANNEL_MTU=1450 +FLANNEL_IPMASQ=false +``` + + +此时,我们在 Kubernetes 主节点上运行了 etcd,在 Kubernetes 节点上运行了 flannel / docker。接下来的步骤是测试跨主机容器通信,这将确认 docker 和 flannel 配置正确。 + + +在任意两个节点上发出以下命令: + +```shell +# docker run -it fedora:latest bash +bash-4.3# +``` + + +您将会进入容器中。安装 iproute 和 iputils 包来安装 ip 和 ping 实用程序。由于一个[错误](https://bugzilla.redhat.com/show_bug.cgi?id=1142311),需要修改 ping 二进制文件的功能来处理"操作不允许"错误。 + +```shell +bash-4.3# dnf -y install iproute iputils +bash-4.3# setcap cap_net_raw-ep /usr/bin/ping +``` + + +现在记下第一个节点上的 IP 地址: + +```shell +bash-4.3# ip -4 a l eth0 | grep inet + inet 18.16.29.4/24 scope global eth0 +``` + + +还要注意另一个节点上的 IP 地址: + +```shell +bash-4.3# ip a l eth0 | grep inet + inet 18.16.90.4/24 scope global eth0 +``` + + +现在从第一个节点 ping 到另一个节点: + +```shell +bash-4.3# ping 18.16.90.4 +PING 18.16.90.4 (18.16.90.4) 56(84) bytes of data. +64 bytes from 18.16.90.4: icmp_seq=1 ttl=62 time=0.275 ms +64 bytes from 18.16.90.4: icmp_seq=2 ttl=62 time=0.372 ms +``` + + +现在,Kubernetes 多节点集群通过 flannel 设置 overlay 网络。 + + + +## 支持级别 + + + +IaaS 供应商 | 配置 管理 | 系统 | 网络 | 文档 | 标准 | 支持级别 +-------------------- | ------------ | ------ | ---------- | --------------------------------------------- | ---------| ---------------------------- +Bare-metal | custom | Fedora | flannel | [docs](/docs/getting-started-guides/fedora/flannel_multi_node_cluster/) | | Community ([@aveshagarwal](https://github.com/aveshagarwal)) +libvirt | custom | Fedora | flannel | [docs](/docs/getting-started-guides/fedora/flannel_multi_node_cluster/) | | Community ([@aveshagarwal](https://github.com/aveshagarwal)) +KVM | custom | Fedora | flannel | [docs](/docs/getting-started-guides/fedora/flannel_multi_node_cluster/) | | Community ([@aveshagarwal](https://github.com/aveshagarwal)) + + +