当前位置: 代码网 > 科技>操作系统>Windows > 部署CNI网络组件+k8s多master集群部署+负载均衡

部署CNI网络组件+k8s多master集群部署+负载均衡

2024年08月06日 Windows 我要评论
仪表板是基于Web的Kubernetes用户界面。您可以使用仪表板将容器化应用程序部署到 Kubernetes集群,对容器化应用程序进行故障排除,并管理集群本身及其伴随资源。您可以使用仪表板来概述群集上运行的应用程序,以及创建或修改单个Kubernetes资源(例如deployment,job,daemonset等)。例如,您可以使用部署向导扩展部署,启动滚动更新,重新启动Pod或部署新应用程序。仪表板还提供有关群集中Kubernetes资源状态以及可能发生的任何错误的。

一、环境部署

主机服务

192.168.91.5 

k8s集群master01
192.168.91.8 k8s集群master02
192.168.91.6k8s集群node01
192.168.91.7k8s集群node02
192.168.91.9 负载均衡nginx+keepalive01(master)
192.168.91.10 负载均衡nginx+keepalive02(backup)

二、部署flannel 


  2.1叙述

  2.2 部署

  2.2.1 在node01节点上操作

  2.2.1.1 上传cni-plugins-linux-amd64-v0.8.6.tgz和flannel.tar到/opt目录中
cd /opt/
docker load -i flannel.tar

mkdir /opt/cni/bin
tar zxvf cni-plugins-linux-amd64-v0.8.6.tgz -c /opt/cni/bin

  2.2.2 在master01节点上操作

  2.2.2.1 上传kube-flannel.yml文件到/opt/k8s目录中,部署cni网络

  2.2.3 部署calico

    k8s 组网方案对比:

  • flannel方案

  需要在每个节点上把发向容器的数据包进行封装后,再用隧道将封装后的数据包发送到运行着目标pod的node节点上。目标node节点再负责去掉封装,将去除封装的数据包发送到目标pod上。数据通信性能则大受影响。

  • calico方案

  calico不使用隧道或nat来实现转发,而是把host当作internet中的路由器,使用bgp同步路由,并使用iptables来做安全访问策略,完成跨host转发。
采用直接路由的方式,这种方式性能损耗最低,不需要修改报文数据,但是如果网络比较复杂场景下,路由表会很复杂,对运维同事提出了较高的要求。

  calico 主要由三个部分组成:
  calico cni插件:主要负责与kubernetes对接,供kubelet调用使用。

  • felix:负责维护宿主机上的路由规则、fib转发信息库等。
  • bird:负责分发路由规则,类似路由器。
  • confd:配置管理组件。

  calico 工作原理:
    calico 是通过路由表来维护每个 pod 的通信。calico 的 cni 插件会为每个容器设置一个 veth pair 设备, 然后把另一端接入到宿主机网络空间,由于没有网桥,cni 插件还需要在宿主机上为每个容器的 veth pair 设备配置一条路由规则, 用于接收传入的 ip 包。
有了这样的 veth pair 设备以后,容器发出的 ip 包就会通过 veth pair 设备到达宿主机,然后宿主机根据路由规则的下一跳地址, 发送给正确的网关,然后到达目标宿主机,再到达目标容器。
这些路由规则都是 felix 维护配置的,而路由信息则是 calico bird 组件基于 bgp 分发而来。
calico 实际上是将集群里所有的节点都当做边界路由器来处理,他们一起组成了一个全互联的网络,彼此之间通过 bgp 交换路由, 这些节点我们叫做 bgp peer。

  目前比较常用的cni网络组件是flannel和calico,flannel的功能比较简单,不具备复杂的网络策略配置能力,calico是比较出色的网络管理插件,但具备复杂网络配置能力的同时,往往意味着本身的配置比较复杂,所以相对而言,比较小而简单的集群使用flannel,考虑到日后扩容,未来网络可能需要加入更多设备,配置更多网络策略,则使用calico更好

  2.2.3.1 在master01节点上操作 

  2.2.3.2 等calico pod都running,节点也会准备就绪

  2.2.4 node02节点部署

  2.2.4.1 在node01节点上操作

  2.2.5 在node02节点上操作

  2.2.5.1 启动kubelet服务

  2.2.6  在master01节点上操作

kubectl get csr

  2.2.7 通过csr请求

kubectl certificate approve node-csr-bbqeh6lvhd4r6yddueepthkb6t_cjdcpvsmdvnh81y0
kubectl get csr

  2.2.8 加载ipvs模块

  2.2.9 部署coredns 

  2.2.9.1 在所有node节点上操作
  2.2.9.1.1 上传coredns.tar到/opt目录中

  2.2.9.2 在master01节点上操作 
  2.2.9.2.1 上传coredns.yaml文件到/opt/k8s目录中,部署coredns

  2.2.9.3 dns解析测试 

注:
如果出现以下报错
[root@master01 k8s]# kubectl run -it  --image=busybox:1.28.4 sh
if you don't see a command prompt, try pressing enter.
error attaching, falling back to logs: unable to upgrade connection: forbidden (user=system:anonymous, verb=create, resource=nodes, subresource=proxy)
error from server (forbidden): forbidden (user=system:anonymous, verb=get, resource=nodes, subresource=proxy) ( pods/log sh)

需要添加 rbac的权限  直接使用kubectl绑定  clusteradmin 管理员集群角色  授权操作权限

[root@master01 k8s]# kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous
clusterrolebinding.rbac.authorization.k8s.io/cluster-system-anonymous created

  2.2.10 master02节点部署

  2.2.10.1 从master01节点上拷贝证书文件、各master组件的配置文件和服务管理文件到master02 节点

  2.2.10.2 修改配置文件kube-apiserver中的ip

  2.2.10.3 在master02节点上启动各服务并设置开机自启

  2.2.10.4 查看node节点状态

  2.2.11 负载均衡部署

//配置load balancer集群双机热备负载均衡(nginx实现负载均衡,keepalived实现双机热备)
##### 在lb01、lb02节点上操作 ##### 
//配置nginx的官方在线yum源,配置本地nginx的yum源

  2.2.11.1 修改nginx配置文件,配置四层反向代理负载均衡,指定k8s群集2台master的节点ip和6443端口

  2.2.11.2 检查配置文件语法 

  2.2.11.3 启动nginx服务,查看已监听6443端口

  2.2.11.4 部署keepalived服务

   2.2.11.5 修改keepalived配置文件

  2.2.11.6 创建nginx状态检查脚本

  2.2.11.7 启动keepalived服务(一定要先启动了nginx服务,再启动keepalived服务)

  2.2.11.8 修改node节点上的bootstrap.kubeconfig,kubelet.kubeconfig配置文件为vip

  2.2.11.9 重启kubelet和kube-proxy服务

  2.2.11.10  在lb01上查看nginx和 node 、 master节点的连接状态

  2.2.12  在master01节点上操作

  2.2.12.1 测试创建pod

  2.2.12.2 查看pod的状态信息
kubectl get pods

kubectl get pods

kubectl get pods -o wide

curl 172.17.36.2

kubectl logs nginx-dbddb74b8-nf9sk

  2.3 部署 dashboard

  2.3.1 dashboard介绍


    仪表板是基于web的kubernetes用户界面。您可以使用仪表板将容器化应用程序部署到      kubernetes集群,对容器化应用程序进行故障排除,并管理集群本身及其伴随资源。您可以使用仪表板来概述群集上运行的应用程序,以及创建或修改单个kubernetes资源(例如deployment,job,daemonset等)。例如,您可以使用部署向导扩展部署,启动滚动更新,重新启动pod或部署新应用程序。仪表板还提供有关群集中kubernetes资源状态以及可能发生的任何错误的

  2.3.1.1 在master01节点上操作
  2.3.1.1.1 上传recommended.yaml文件到/opt/k8s目录中

  2.3.1.1.2 创建service account并绑定默认cluster-admin管理员集群角色 

  2.3.1.1.3 使用输出的token登录dashboard

https://nodeip:30001icon-default.png?t=n7t8https://nodeip:30001

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com