写点什么

运维课第 15 周作业

作者:好吃不贵
  • 2023-03-02
    浙江
  • 本文字数:2281 字

    阅读完需:约 7 分钟

1、总结 Underlay 和 Overlay 网络的区别

2、在 kubernetes 集群实现 underlay 网络;

3、总结网络组件 flannel vxlan 模式的网络通信流程;

4、总结网络组件 calico IPIP 模式的网络通信流程;

扩展:

1、基于二进制实现高可用的 K8S 集群环境

总结 Underlay 和 Overlay 网络的区别

网络有基于二层的三层的情况,其中二层是经过 mac 地址交换的,三层是通过 ip 地址路由的。通常分为 underlay 和 overlay 两种情况。

underlay 网络

underlay 的网络是传统的 IT 基础网络设施,比如直接使用交换机,路由器等,依赖于物理网络通信。优点是性能比较好,缺点是依赖物理网络。常见的方案有 mac vlan,ip vlan 和直接路由等。

mac vlan: 同一个以太网,有多个子接口,每个接口都有独立 mac@和 IP@。

ip vlan:和 mac vlan 类似,但每个虚拟接口共享 mac@。

网络包的流向是:

container eth0->veth->kernel->eth0。收包是相反的。

overlay 网络

overlay 网络叫叠加网络。是在原网络基础上加上新的 header。优点是对网络兼容性好,跨子网通信方便。缺点是封装和解封有额外的开销。一般通过 UDP/VXLAN/host-gw 等封装,UDP 性能不够好。host-gw 比较新,可以加解密,会消耗一部分 CPU,目前使用不多。当下使用最多的是 vxlan,vxlan 扩展了 vlan 的个数,默认 vlan 只有 12 位,最多是 4096 个,当使用 VXLAN 后,可以扩展为 2^24 个不同的配置。

overlay 网络一般有 flannel 和 calico,通常来说 calico 性能更好。阿里的 hybrid 也支持 overlay 网络。

网络包的流向是:

container eth0->veth->cni0->flannel.1->kernel->eth0。其中 kernel 和 eth0 是都会经过的,如果通过 DPDK,不经过 kernel,直接用户态发出去。收包是反过来的。

hybridnet既支持 overlay,也支持 underlay。

在 kubernetes 集群实现 underlay 网络

virtualbox 选择 1 个桥接网卡,接到路由器访问外网。3 个 host-only 的网络,用于内部通信。

virtualbox 的 host interface 配置为:

这里的 172.31.0.2 可以给后面的 underlay 网络,作为外部网关地址。

netplan 配置为(master 的例子):

node1 的例子:

配置好之后,网络如下:

其中 192.168.31.101 是连到小米路由器的。

api server 用 192.168.6.201 地址。master 和 node 的布局采用杰哥的地址。

确保主机可以 ping 通这 2 个 IP。

启动 master:

首先 pull image,注意这里需要 pause 3.6 和 3.7 的 2 个版本 image 才行。

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.24.10

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.24.10

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.24.10

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.24.10

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.7

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.6-0

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.8.6

然后启动 master:

kubeadm init --apiserver-advertise-address=172.31.7.101 --apiserver-bind-port=6443 --kubernetes-version=v1.24.10 --pod-network-cidr=10.200.0.0/16 --service-cidr=172.31.5.0/24 --service-dns-domain=cluster.local --image-repository=registry.cnhangzhou.aliyuncs.com/google_containers --cri-socket unix:///var/run/cri-dockerd.sock

这里的 service-cidr 是 underlay 的网络,也就是用宿主机的网络。

hybridnet

helm install hybridnet hybridnet/hybridnet -n kube-system --set init.cidr=10.200.0.0/16

注意这里的 cidr 是 etcd 网段的地址。

Warning FailedScheduling 4m3s (x7 over 34m) default-scheduler 0/3 nodes are available: 3 node(s) didn't match Pod's node affinity/selector. preemption: 0/3 nodes are available: 3 Preemption is not helpful for scheduling.

这个错误提示表示需要加上 label 才行。

kubectl label node k8s-node01 node-role.kubernetes.io/master=

kubectl label node k8s-node02 node-role.kubernetes.io/master=

可以看到,当 node03 没有标记时,无法被调度过去,这时候的 ROLES 是 none,改为 master 就可以调度了。

当前配置,node1-3 都支持 underlay 网络。

配置 underlay 网络

k create ns myserver

打标签,建 pod 时,写 node selector。

k label node k8s-node01 network=underlay-nethost

k apply -f underlay-cases-files/1.create-underlay-network.yaml

下面的 underlay 网络就是自己建的网络了。V4TOTAL 表示总共有 254 个 IPv4 的地址。

可以在 yaml 里选择配置为 underlay 的模式。

3.tomcat-app1-underlay.yaml 里

annotations: #使用 Underlay 或者 Overlay 网络

networking.alibaba.com/network-type: Underlay

然后创建 tomcat 的 pod。

目前 pod 建不起来,有点问题。

这个 443 的端口没有建,但是 ip 是有的。

ip 地址 172.31.5.1。

flannel vxlan 模式的通信流程

网络数据的流向是:

发送:pod eth0->host veth->host cni0->host vxlan(flannel.1)->host eth0

接收:host eth0->host flannel.1-> host cni0 -> host veth0 -> pod eth0

calico IPIP 模式的通信流程

网络数据的流向是:

发送:pod eth0->host cali -> host tun0 -> host eth0

接收:host eth0->host tun0 ->host cali -> pod eth0

基于二进制实现高可用的 K8S 集群环境

可以使用 ezdown 的来部署 k8s 集群。

主机 CPU 有限,暂时无法部署起来,未来需要可以参考:https://github.com/easzlab/kubeasz/blob/master/ezdown

用户头像

好吃不贵

关注

还未添加个人签名 2018-11-20 加入

还未添加个人简介

评论

发布
暂无评论
运维课第15周作业_好吃不贵_InfoQ写作社区