k8s笔记8--快速部署k8s集群 v1.19.4--calico网络

k8s笔记8--快速部署k8s集群 v1.19.4--calico网络

1 说明

k8s 部署的时候可以选择多种cni插件,每种插件都有其对应的特殊,最经典的的莫过于 Flannel 和 Calico。

Flannel 是一个为 Kubernetes 提供叠加网络的网络插件,它基于 Linux TUN/TAP,使用 UDP 封装 IP 报文来创建叠加网络,并借助 etcd 维护网络的分配情况 。其后端支持VxLAN、host-gw和UDP,默认为VxLAN(在三层构建了一个大二层网络)。
如下为flannel VxLAN后端结构示意图:
在这里插入图片描述

Calico 是一个基于 BGP 的 三层网络插件,并且也支持网络策略来实现网络的访问控制;它在每台机器上运行一个 vRouter,利用 Linux 内核来转发网络数据包 , 并借助 iptables 实现防火墙等功能 。
Calico 本身是一个三层的虚拟网络方案,它将每个节点都当做一个路由器(router),将每个节点的容器都当做是"节点路由器"的一个终端并为其分配一个IP地址,各个节点路由器通过BGP学习生成路由规则,从而将不同节点上的容器连接起来。
如下为calico的系统结构示意图:
在这里插入图片描述

笔者在 k8s笔记6–使用kubeadm快速部署k8s集群 v1.19.4 中部署了基于Flannel的集群,但是Flannel暂时不支持网络策略,因此此处部署一个基于Calico的集群。其节点配置和上文相同,部署方法和上文几乎一致,此处只添加了一些重要步骤。

2 搭建集群

  1. 配置基础环境 和 软件
    参考笔者博文进行设置即可,唯一区别就是需要load calico相关的镜像,其它基本完全一样。
    k8s笔记6–使用kubeadm快速部署k8s集群 v1.19.4->2.1 安装基础软件

  2. 初始化master

    # kubeadm init --apiserver-advertise-address=192.168.2.131 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.224.0.0/16
    # mkdir -p $HOME/.kube
    # sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    # sudo chown $(id -u):$(id -g) $HOME/.kube/config
    

    注:Calico 网络默认pod网络网段为192.168.0.0/16 ,会自动分配service网段,因此不需要像Flannel一样设置service网段。笔者虚拟机网段为192.168.2.x,为了更方便测试网络信息,此处将网段设置为 --pod-network-cidr=10.224.0.0/16 。

  3. master部署cni网络

    # kubectl apply -f calico.yaml 
    configmap/calico-config created
    customresourcedefinition.apiextensions.k8s.io/bgpconfigurations.crd.projectcalico.org created
    customresourcedefinition.apiextensions.k8s.io/bgppeers.crd.projectcalico.org created
    customresourcedefinition.apiextensions.k8s.io/blockaffinities.crd.projectcalico.org created
    customresourcedefinition.apiextensions.k8s.io/clusterinformations.crd.projectcalico.org created
    customresourcedefinition.apiextensions.k8s.io/felixconfigurations.crd.projectcalico.org created   customresourcedefinition.apiextensions.k8s.io/globalnetworkpolicies.crd.projectcalico.org created
    customresourcedefinition.apiextensions.k8s.io/globalnetworksets.crd.projectcalico.org created
    customresourcedefinition.apiextensions.k8s.io/hostendpoints.crd.projectcalico.org created
    customresourcedefinition.apiextensions.k8s.io/ipamblocks.crd.projectcalico.org created
    customresourcedefinition.apiextensions.k8s.io/ipamconfigs.crd.projectcalico.org created
    customresourcedefinition.apiextensions.k8s.io/ipamhandles.crd.projectcalico.org created
    customresourcedefinition.apiextensions.k8s.io/ippools.crd.projectcalico.org created    customresourcedefinition.apiextensions.k8s.io/kubecontrollersconfigurations.crd.projectcalico.org created
    customresourcedefinition.apiextensions.k8s.io/networkpolicies.crd.projectcalico.org created
    customresourcedefinition.apiextensions.k8s.io/networksets.crd.projectcalico.org created
    clusterrole.rbac.authorization.k8s.io/calico-kube-controllers created
    clusterrolebinding.rbac.authorization.k8s.io/calico-kube-controllers created
    clusterrole.rbac.authorization.k8s.io/calico-node created
    clusterrolebinding.rbac.authorization.k8s.io/calico-node created
    daemonset.apps/calico-node created
    serviceaccount/calico-node created
    deployment.apps/calico-kube-controllers created
    serviceaccount/calico-kube-controllers created
    poddisruptionbudget.policy/calico-kube-controllers created
    
  4. 加入node节点
    master节点apply cni网络后,等几分钟,以确保相关服务的pod都正常拉起来了,然后再加入work节点。

    # kubeadm join --token 7qm7bu.16iurmxsyp10h5e8 192.168.2.131:6443 --discovery-token-ca-cert-hash sha256:dcb4c0d4d1204134f4e99e164f210e6f96494c63314306d1da0f49458654206f
    

    在这里插入图片描述

  5. 安装 metrics-server

    # kubectl apply -f components.yaml
    $ kubectl apply -f components.yaml 
    serviceaccount/metrics-server created
    clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
    clusterrole.rbac.authorization.k8s.io/system:metrics-server created
    rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
    clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
    clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
    service/metrics-server created
    deployment.apps/metrics-server created
    apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created
    

    查看node metrics信息: 在这里插入图片描述
    Lens 查看当前pod信息:
    在这里插入图片描述

3 说明

1 calico 官方文档 about-calico
2 kubernetes-sigs/metrics-server
3 Kubernetes 进阶实战

猜你喜欢

转载自blog.csdn.net/u011127242/article/details/113090640