k8s 网络

还没有部署网络。

k8s的网络类型:

k8s中的通信模式:

1,pod内部之间容器和容器之间的通信。

在同一个pod中的容器共享资源和网络,使用同一个网络命名空间。可以直接通信的。

2,同一个node节点之内不同pod之间的通信。

每一个pod都有一个全局的真实的IP地址,同一个node之间的不同的pod可以直接使用对方的IP地址进行通信。

pod1和pod2是通过docker0的网桥来进行通信。

3,不同node节点上的pod之间如何进行通信?

cni的插件:

cni是一个标准接口,用于容器运行时调用网络插件,配置容器网络,负责设置容器的网络命名空间,IP地址,路由等等参数。

flannel组件:功能就是让集群之中不同节点的docker容器具有全集群唯一的虚拟IP地址。

overlay网络,在底层物理网络的基础之上,创建一个逻辑的网络层。二层+三层的集合 二层是物理网络,三层的逻辑上的网络层。

overlay网络也是一种网络虚拟化的技术。

flannel支持的数据转发方式:

1,UDP模式,默认模式,应用转发,配置简单,但是性能最差

2,vxlan,基于内核转发,也最采用的网络类型(小集群都资源这个)

3,host-gw,(性能最好,但是配置麻烦。)

UDP模式:基于应用转发,flannel提供路由表,flannel封装数据包,解封装。

node都会有一个flannel的虚拟网卡。

flannel的作用:

1.封装数据包

2.转发通过flannel插件的路由表

要多层转发,所以性能比较差

vxlan:使用的就是overlay的虚拟隧道通信技术。二层+三层的模式。

udp基于应用层,用户。

vxlan:flannel提供路由表,内核封装接封装。

flannel1.1 接口

flannel作用:识别对应的vni的IP地址,

实验:

---------- 部署 flannel ----------

在 node01 02 节点上操作

#上传 cni-plugins-linux-amd64-v0.8.6.tgz 和 flannel.tar 到 /opt 目录中

cd /opt/

docker load -i flannel.tar

导入镜像包

mkdir -p /opt/cni/bin

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

在 master01 节点上操作

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

cd /opt/k8s

kubectl apply -f kube-flannel.yml

kubectl get pods -n kube-system

配置网络之后。

kubectl get nodes

fannel:每个发向容器的数据包进行封装,vxlan通过vtep打包数据,有内核封装数据包---转发到目标node节点。到了目标节点,还有一个解封装的过程,在发生目标pod。性能是由移动影响。

---------- 部署 Calico ----------

Calico插件:采用直接路由 的方式。BGP路由。不需要修改报文,统一直接通过路由表转发,路由表会很复杂,运行维护的要求比较高。

BGP模式的特点:交换路由信息的外部网关协议,可以连接不同的节点,node可能不是一个网段。BGP会自动寻址,自动选择可靠的。最佳的,而且是动态的路由选择。自动识别相邻的路由设备。

calico不使用overlay,也不需要交换,直接通过虚拟路由实现,每一台虚拟路由都通过BGP转发。

核心组件:

felix:也是运行在主机的一个个pod,一个进程,k8s,daemonset的方式部署的pod。

daemont set 会在每个node节点部署相同的pod,后台运行的方式。

负责在宿主机上插入路由规则,维护calico需要的网络设备。网络接口的管理,监听,路由等等。

BGP Client:bird BGP的客户端,专门负责在集群中分发路由规则的信息。每一个节点都会有一个BGP Client。

BGP协议广播的方式通知其他节点,分发路由的规则。执行网络互通。

etcd:保存路由信息,负责整个网络元数据的一致性。保证网络状态的一致和准确。

BGP:通过为ip路由表的签字来实现目标主机的可打性,

对比ipip模式,BGP没有隧道,BGP模式下,pod的数据包之间通过网卡发送到目的地。

ipip的隧道:隧道进行数据包的封装ipv4 --- ipv4.

calico的工作原理:

路由表来维护每个pod之间的通信。

创建好pod之后,添加一个设备cali veth pair设备。

虚拟网卡:veth pair是一对设备,虚拟的以太网设备。

一头连接在容器的网络命名空间

另一头连接宿主机的网络命名空间 cali

ip地址分配:veth pair连接容器的部分给容器分配一个ip地址,这个ip地址是唯一标识,宿主机也会被veth pair分配一个calico网络的镍币IP地址。和其他节点上的容器进行通信。

veth设备,容器发出的ip地址通过veth pair设备到宿主机,宿主机根据路由规则的下一跳地址,发送到网关(目标宿主机,)

数据包到达目标宿主机,veth pari设备,目标宿主机也是根据路由规则,下一跳地址,转发到目标容器。

面试问calico就是根据路由规则来转发。通过veth设备来

ipip模式当中会生成一个tunnel。数据包在tunnel内部打包。封装:宿主机ip 容器内部的IP地址。

实验:

在 master01 节点上操作

#上传 calico.yaml 文件到 /opt/k8s 目录中,部署 CNI 网络

cd /opt/k8s

vim calico.yaml

修改:

安装:

kubectl apply -f calico.yaml

kubectl get pods -n kube-system

kubectl get nodes

总的管理器

创建了之后就有了一个隧道

ifconfig

总结:

面试题:

k8s当中常用的网络类型:flannel解饿calico

flannel:配置简单,功能简单,基于overlay叠加网络实现,在物理层的网络封装在一个虚拟的网络

vxlan是虚拟三层网络。

udp是默认模式

vxlan 最大的模式 vni+ip 进行转发,flannel通过路由表,内核封装和解封装

host-gw

由于封装和解封装的过程,对应数据传输的性能会有影响,没有网络策略配置的能力 UDP(协议)

默认网段:10.244.0.0/16

calico:功能强大,基于路由表进行转发,没有封装和接封装的过程。剧本网络策略的配置能力。但是路由表维护起来复杂。

模式:ipip BGP

BGP:通过为ip路由表的签字来实现目标主机的可打性,

对比ipip模式,BGP没有隧道,BGP模式下,pod的数据包之间通过网卡发送到目的地。

ipip的隧道:隧道进行数据包的封装ipv4 --- ipv4.

如果是简单的小集群:flannel

如果以后要扩容,配置网络策略:calico

我们公司比较小,用的是flannel,但是calico我也知道,

让我来部署,一般的用flannel就够了,有其他要求的话,来部署calico

coredns:

可以为集群当中的service资源创建一个域名和ip进行对应解析的关系。

service是对外提供访问的地址,现在我们加入DNS机制之后,可以之间访问服务名,

实验继续部署二进制

创建pod

kubectl create deployment nginx1 --image=nginx:1.22 --replicas=3

每创建一个pod就会创建两个个虚拟网卡:

一边连容器,一边连宿主机。

kubectl get pod -o wide查看详细信息。

---------- master02 节点部署 ----------

先每个节点做映射:

vim /etc/hosts

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

scp -r /opt/etcd/ root@192.168.176.62:/opt/

scp -r /opt/kubernetes/ root@192.168.176.62:/opt

scp -r /root/.kube root@192.168.176.62:/root

scp /usr/lib/systemd/system/{kube-apiserver,kube-controller-manager,kube-scheduler}.service root@192.168.176.62:/usr/lib/systemd/system/

修改配置文件kube-apiserver中的IP

vim /opt/kubernetes/cfg/kube-apiserver

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

systemctl start kube-apiserver.service

systemctl enable kube-apiserver.service

systemctl start kube-controller-manager.service

systemctl enable kube-controller-manager.service

systemctl start kube-scheduler.service

systemctl enable kube-scheduler.service

//查看node节点状态

ln -s /opt/kubernetes/bin/* /usr/local/bin/

kubectl get nodes

kubectl get nodes -o wide

------------------------------ 负载均衡部署 ------------------------------

//配置load balancer集群双机热备负载均衡(nginx实现负载均衡,keepalived实现双机热备)

在lb01、lb02节点上操作

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

//配置nginx的官方在线yum源,配置本地nginx的yum源

cat > /etc/yum.repos.d/nginx.repo

[nginx]

name=nginx repo

baseurl=Index of /packages/centos/7/$basearch/

gpgcheck=0

EOF

yum install nginx -y

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

vim /etc/nginx/nginx.conf

添加:

nginx -t

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

systemctl start nginx

systemctl enable nginx

netstat -natp | grep nginx

部署keepalived服务

yum install keepalived -y

//修改keepalived配置文件

vim /etc/keepalived/keepalived.conf

创建nginx状态检查脚本

vim /etc/nginx/check_nginx.sh

#!/bin/bash

/usr/bin/curl -I http://localhost &>/dev/null

if [ $? -ne 0 ];then

# /etc/init.d/keepalived stop

systemctl stop keepalived

fi

chmod +x /etc/nginx/check_nginx.sh

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

systemctl start keepalived

systemctl enable keepalived

ip a #查看VIP是否生成

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

cd /opt/kubernetes/cfg/

vim bootstrap.kubeconfig

server: https://192.168.176.100:6443

vim kubelet.kubeconfig

server: https://192.168.176.100:6443

vim kube-proxy.kubeconfig

server: https://192.168.176.100:6443

//重启kubelet和kube-proxy服务

systemctl restart kubelet.service

systemctl restart kube-proxy.service

------------------------------ 部署 Dashboard ------------------------------

Dashboard:

仪表盘, kubenetes的可视化界面。在这个可视化界面上,可以对k8s集群进行管理。

在 master01 节点上操作

#上传 recommended.yaml 文件到 /opt/k8s 目录中

cd /opt/k8s

直接运行

kubectl apply -f recommended.yaml

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

kubectl create serviceaccount dashboard-admin -n kube-system

kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

获取token值

kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

使用输出的token登录Dashboard

https://192.168.176.63:30001

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/582821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大创项目推荐 深度学习YOLO抽烟行为检测 - python opencv

文章目录 1 前言1 课题背景2 实现效果3 Yolov5算法3.1 简介3.2 相关技术 4 数据集处理及实验5 部分核心代码6 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习YOLO抽烟行为检测 该项目较为新颖,适合作为竞赛课…

BAQ压缩MATLAB仿真

本专栏目录: ​​​​​​​全球SAR卫星大盘点与回波数据处理专栏目录-CSDN博客 我们按照上一期文章的BAQ原理编写MATLAB代码,进行baq压缩与解压缩的全流程验证,并分析BAQ压缩对信号指标造成的影响。 生成3个点目标回波数据,加入高斯噪声,对回波进行BAQ压缩和解BAQ压缩,…

具有出色的数据速率、SI8642BA-AUR、SI8642BB-AS1R、SI8641BB-B-IUR、SI8635BD-B-ISR低功耗数字隔离器

一、简介 Si86xx 超低功耗数字隔离器系列是CMOS器件,与传统隔离技术相比,具有出色的数据速率、传播延迟、功耗、尺寸、可靠性和外部BOM优势。这些产品的工作参数在宽温度范围内和整个设备使用寿命内保持稳定,便于设计和高度统一的性能。所有…

Leetcod面试经典150题刷题记录 —— 栈篇

Leetcod面试经典150题刷题记录 —— 栈篇 1. 有效的括号2. 简化路径3. 最小栈4. 逆波兰表达式求值5. 基本计算器 1. 有效的括号 题目链接:有效的括号 - leetcode 题目描述: 给定一个只包括 ( ,),{,},[&…

CSS尺寸单位详解(rpx、px、pt、em、rem、%、vh、vw的区别)

设备物理像素 pt:屏幕宽、分辨率,其中每一小份就是1pt。 css 像素 px:pc 机大屏幕显示器,1px约等于0.76个物理像素 手机小屏幕:以IPhone6为标准,物理像素750,分辨率375 1px 2pt。 px 也是一个…

java毕业设计—基于SpringBoot的小米商城的设计与实现

1,绪论 1.1 背景调研 电子商城的建设,不仅仅是初级网上购物的实现,它能够有效地在Internet上构架安全的和易于扩展的业务框架体系,实现BToB(企业对企业)、BToC(企业对用户)以及CTo…

首次使用TypeScript,报错:无法重新声明块级范围变量(声明变量报错)

前几天在书写TypeScript代码时,出现了声明变量报错的情况,具体情况如下: let arr: number; arr 10; console.log(arr);报错如下: 解决方案: 在配置文件tsconfig.json中,配置如下代码: { &q…

【计算机毕业设计】SSM医疗药品采购系统

项目介绍 ssm医疗药品采购系统。主要功能有: 用户管理:管理员列表; 采购管理:采购列表; 药品出库:药品出库; 库存管理:库存统计; 数据维护:药品列表、仓库…

软件测试常见的面试题,这些题面试前看提高百分之60的通过率

01、您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。 答:有黑盒和白盒两种测试种类,黑盒有等价类划分法,边界分析法,因果图法和错误猜测法。白盒有逻辑覆盖法&…

Python文件操作与面向对象

Python文件操作与面向对象 一、文件备份案例 1、实例代码 # 1、接收用户输入的文件名(要备份的文件名) oldname = input(请输入要备份的文件名称:) # python.txt # 2、规划备份文件名(python[备份].txt) # 搜索点号 index = oldname.rfind(.) # 返回文件名和文件后缀 …

3D手势光流计算

GitHub - NVIDIA/flownet2-pytorch: Pytorch implementation of FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks 计算光流 conda create -n 3dgesture python3.8 conda activate 3dgesture ​pip install torch 1. import torch时报错ModuleNotFoun…

从 Linux Crontab 到 K8s CronJob,定时任务正在经历怎样的变革

作者:黄晓萌(学仁) 背景 Job 表示短周期的作业,定时 Job 表示按照预定的时间运行Job,或者按照某一频率周期性的运行 Job。比如: 许多传统企业使用 Linux 自带的 crontab 来做定时任务的方案,该方案非常简单&#xff…

腾讯云服务器购买流程:一步步全流程购买指南

腾讯云服务器购买流程直接在官方秒杀活动上购买比较划算,在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵,但是自定义购买云服务器CPU内存带宽配置选择范围广,活动上购买只能选择固定的活动机,选择范围窄,但是…

Vue 问题解决

一、问题:TypeError: (0 , _message.default) is not a function 当没有default时,在其他页面import引入的时,必须加{}。 二、问题:Vue前端页面的表格数据总是一行一行的显示 使用Async/Await来解决前端数据一行一行显示的问题。可以将获取部…

鸿蒙原生应用再添新丁!搜狐集团、航旅纵横入局鸿蒙

鸿蒙原生应用再添新丁!搜狐集团、航旅纵横入局鸿蒙 来自 HarmonyOS 微博12月28日消息,搜狐集团宣布与华为达成全面合作!搜狐新闻近期将完成#鸿蒙原生应用#核心功能版本,搜狐视频也启动了#鸿蒙原生应用#开发!这不仅是一…

数据结构学习 Leetcode494 目标和

关键词:动态规划 01背包 dfs回溯 一个套路: 01背包:空间优化之后dp【target1】,遍历的时候要逆序遍历完全背包:空间优化之后dp【target1】,遍历的时候要正序遍历 题目: 解法一: …

k8s搭建(三、k8s从节点创建)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

Qt底层机制之对象树总结

Qt对象树是Qt框架中的一个重要概念,它用于管理对象之间的关系和生命周期。除了常规的对象树结构,Qt还提供了一些特殊的用法来扩展对象树的功能和灵活性。 1. 父子关系:Qt对象树通过设置父对象来建立父子关系。父对象负责管理子对象的内存分配和释放。这种关系可以通过`setP…

Frappe Charts:数据可视化的强大工具

一、产品简介: 一个简单、零依赖、响应式的 开源SVG 图表库。这个图表库无论是数据更新还是屏幕大小变化,都能快速响应并更新图表。数据生成和悬停查看都有舒服的交互动效,体验感很好。不仅支持配置颜色,外观定制也很方便。还支持…

操作教程|MeterSphere UI测试+VNC:简单、快捷地查看UI测试实时执行详情

编者注:本文为CSDN博主hxe116的原创文章。 原文链接为:https://blog.csdn.net/hxe116/article/details/134714960?spm1001.2014.3001.5502 作为一款一站式的开源持续测试平台,MeterSphere涵盖了测试跟踪、接口测试、UI测试和性能测试等功能…