k8s网络插件及基础命令

一、k8s的cni网络插件

1.k8s的内部网络模式

  • pod内的容器与容器之间的通信。
  • 一个节点上的pod之间的通信,docker0网桥直接通信。
  • 不同节点上的pod之间的通信:通过物理网卡的ip地址和其他节点上的物理网卡的设备进行通信,然后把流量转发到指定的pod内。

2.cni作用

  • 给每一个pod提供一个全局的ip地址
  • CNI是一个标准接口,用于容器运行时调用网络插件,配置容器的网络,设置容器的网络命名空间,ip地址,路由等参数。

3.cni的插件类型  

3.1 flannel插件

        它是一种overlay网络模式,tcp数据包封装在另一种网络里面进行路由转发的模式,在二层的基础上再创建一个逻辑上的网络层,可以实现跨节点的容器通信。

(1)模式
模式说明
udp模式 (默认模式)性能最差,基于应用层转发
vxlan模式基于内核转发,最常用的方式
host-gw性能最好,但是配置麻烦
(2)vxlan模式的工作原理  
  • 数据帧从主机A上的pod1出发,二次封装源ip和目的ip。(flannel会通过apiserver保存一张路由表到etcd)。
  • 从pod1出发的数据包,经过docker0/cni0网络接口转到flannel.1接口(vxlan模式的默认接口)。
  • flannel.1接口收到数据后添加vxlan头部,封装在udp报文中。
  • 主机A的网路收到flannel.1接口的数据包,封装主机A的ip,和主机B的ip。
  • 数据包到达主机B,vxlan默认接口是8472,主机B收到数据包,解包,传送到8472端口。就是flannel.1的接口,然后再解包,把数据转发到指定的pod。

3.2 calico插件

        把主机作为路由器,使用BGP同步路由的方式转发数据包。BGP动态路由,自动实现路由选择。

(1)calico的组成部分
组件作用
felix维护宿主机上的路由规则,以及FIB库(转发信息库)
BIRD分发路由规则
confd配置管理组件
(2)转发原理

        为每一个容器设置一个veth pair的设备。相当于桥接的功能,一端介入宿主机的网络空间,veth pair的另一端配置一个路由规则,接入容器docker0/cni0。

(3)路由传播
  • felix在节点上添加pod的ip地址,添加pod的子网路由
  • BIRD在集群内节点内建立BGP的会话,广播本机的路由节点
  • 集群内的节点学习整个路由表,如何能够到达其他节点的pod的下一跳地址
  • 宿主机直接把数据包发送到目标主机,通过veth pair设备直接转发到目标pod

 4.实验

flannel插件

#三台服务器
#192.168.206.10 master;192.168.206.20 node01;192.168.206.30 node02
#三台一起解压缩cni-plugins
cd /opt
mv cni cni_bak
mkdir -p ./cni/bin
tar -xf cni-plugins-linux-amd64-v0.8.6.tgz -C /opt/cni/bin/#只在主服务器上操作
kubectl apply -f kube-flannel.yml

calico插件

#三台机器一起
cd /opt
mv cni cni_bak
mkdir -p ./cni/bin
tar -xf cni-plugins-linux-amd64-v0.8.6.tgz -C /opt/cni/bin/
mkdir calico
cd calico
docker load -i calico-cni.tar
docker load -i calico-kube-controllers.tar
docker load -i calico-node.tar
docker load -i calico-pod2daemon-flexvol.tar#只在主服务器上操作
vim calico.yaml
#修改里面定义Pod的网络(CALICO_IPV4POOL_CIDR),需与前面 kube-controller-manager 配置文件指定的 cluster-cidr 网段一样- name: CALICO_IPV4POOL_CIDRvalue: "10.244.0.0/16"     #Calico 默认使用的网段为 192.168.0.0/16kubectl apply -f calico.yaml
kubectl get pod -n kube-system#自动补齐
vim /etc/profile
source <(kubectl completion bash)
source /etc/profilekubectl create deployment nginx --image=nginx:1.22 --replicas=3
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get svccurl 192.168.206.10:32663#修改三个容器内的web页面,重新访问,会自动轮询

 

 二、k8s的基础命令

1.基础命令 

基础命令说明
kubectl get pod查看默认命名空间里面的pod状态
kubectl get ns查看命名空间
kubectl get pod -n kube-system查看指定的命名空间,不指定是default
kubectl create namespace abc创建命名空间,指定名字为abc
kubectl create deployment nginx1 --image=nginx:1.22 --replicas=3使用nginx:1.22 镜像,创建了一个名为nginx1 的部署,有 3 个容器副本在运行
kubectl get pod -n abc列出命名空间为abc中的所有 容器组
kubectl expose deployment nginx1 --port=80 --type=NodePort -n abc将现有的nginx1暴露为一个NodePort类型的服务
kubectl get pod -o wide显示详细信息
kubectl delete nginx-6c4c7f844f-47xv5基于控制器创建的pod,删除pod相当于重启,不能把pod完全销毁。
kubectl version查看版本
kubectl api-resources列出当前k8s集群中所有可用的API资源
kubectl describe pod nginx-6c4c7f844f-47xv5查看具体资源的详细信息
kubectl logs nginx-6c4c7f844f-47xv5查看pod的日志
kubectl logs -f nginx-6c4c7f844f-47xv5动态查看
kubectl exec it nginx-6c4c7f844f-hn576 bash进入pod内的容器

2.pod的扩缩容

法一:手动改

kubectl scale deployment nginx1 --replicas=1  #命令行修改副本数

kubectl edit deployments.apps nginx1  #编辑配置文件

法二:自动扩缩容

HPA  根据cpu的负载自动扩缩容

 

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

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

相关文章

Zookeeper是如何解决脑裂问题的?

大家好&#xff0c;我是锋哥。今天分享关于【Zookeeper是如何解决脑裂问题的&#xff1f;】面试题。希望对大家有帮助&#xff1b; Zookeeper是如何解决脑裂问题的&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Zookeeper 通过多种机制来解决脑裂&…

判断您的Mac当前使用的是Zsh还是Bash:echo $SHELL、echo $0

要判断您的Mac当前使用的是Zsh还是Bash&#xff0c;可以使用以下方法&#xff1a; 查看默认Shell: 打开“终端”应用程序&#xff0c;然后输入以下命令&#xff1a; echo $SHELL这将显示当前默认使用的Shell。例如&#xff0c;如果输出是/bin/zsh&#xff0c;则说明您使用的是Z…

web直播弹幕抓取分析 signature

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 前言 最近遇到太多难点了卡了很久&am…

使用Deepseek搭建本地知识库-Cherry Studio

Cherry Studio 支持多模型服务的 Windows/macOS GPT 客户端 GITHUB&#xff1a;CherryHQ/cherry-studio CSDN资源&#xff1a;cherry studio Cherry Studio 是一个支持多模型服务的桌面客户端&#xff0c;为专业用户而打造&#xff0c;内置 30 多个行业的智能助手&#xff0c…

Node.js 环境配置

什么是 Node.js Node.js 是一个基于 Chrome V8 JavaScript 引擎的 JavaScript 运行时环境&#xff0c;它允许你在服务器端运行 JavaScript。传统上&#xff0c;JavaScript 主要用于浏览器中的前端开发&#xff0c;而 Node.js 使得 JavaScript 也能够在服务器上执行&#xff0c;…

面向对象程序设计-实验2

题目1 6-1 使用动态内存分配的冒泡排序。 代码清单&#xff1a; #include <iostream> using namespace std; int* bubble_sort(int n);/* 对长度为n的数组执行冒泡排序 */ int main() { int n; cin >> n; int* a bubble_sort(n); for (int i 0; i < n; i)…

集成Google Maps页面提示[For development purposes only]解决方案

问题描述 填写Google Maps JavaScript API密钥之后(https://console.cloud.google.com/apis/credentials/key/2fb9924f-4dc6-4e77-b26f-085b67f48ae0?inv=1&invt=Abo68g&project=deft-velocity-450208-t8),加载Google Maps JavaScript API会出现这样的显示: 问题…

深浅拷贝~

深浅拷贝&#xff1a;直接赋值给的是地址&#xff0c;如果修改赋值后的变量&#xff0c;实际上连同原变量的值一并修改了。 浅拷贝 展开运算符 {...obj} 拷贝对象 Object.assign(新&#xff0c;旧) 深拷贝 递归&#xff1a;自己调用自己 以下实际是浅拷贝 递归调用处理数组问题…

PySpark学习笔记5-SparkSQL

sparkSql的数据抽象有两种。 一类是data set适用于java和Scala 一类是data frame适用于java&#xff0c;Scala&#xff0c;python 将r d d转换为data frame #方式一 df spark.createDataFrame(rdd,schema[name,age]) #方式二 schema Structtype(). add(id,integertype(),nu…

【医院绩效管理专题】2.绩效管理:医院发展的核心驱动力

医院成本核算、绩效管理、运营统计、内部控制、管理会计专题索引 一、引言 在当今医疗行业快速发展的背景下,医院管理面临着日益复杂的挑战。绩效管理作为医院管理的核心组成部分,对于提升医院运营效率、优化医疗服务质量以及实现可持续发展具有举足轻重的作用。它不仅是医…

unity学习32:角色相关1,基础移动控制

目录 0 应用商店 1 角色上新增CharacterController 组件 1.1 角色上新增CharacterController 组件 1.2 如果没有这个则会报错​编辑 2 速度 2.1 默认速度 2.2 修改速度为按时间计算 2.2 movespeed&#xff0c; 3 测试移动的代码 3.1 CharacterController 变量的声明…

构建复杂且高效的人机协作工作流?Agentic Workflows

智能创作引擎架构设计 核心原理 一个 AI 原生创作引擎&#xff0c;通过自由形式的画布界面&#xff0c;结合多线程对话、知识库 RAG 集成、上下文记忆、智能搜索和所见即所得的 AI 编辑器等功能&#xff0c;帮助用户轻松将想法转化为生产级内容。 模块详解 1. 前端模块 (apps/w…

H266/VVC 环路滤波中去块滤波 DF 技术

去块滤波 DF H266 中去方块滤波 DF 过程类似 HEVC 中处理过程&#xff0c;但也引进了一些新技术&#xff0c;用于去除方块效应。方块效应指编码块边界处的不连续现象。方块效应的成因主要是基于块的编码过程中&#xff0c;各个块的预测、 变换、量化等过程相互独立&#xff0c;…

Python设计模式 - 原型模式

定义 原型模式是一种创建型设计模式&#xff0c;它可以通过复制现有对象来创建新对象&#xff0c;而不是直接实例化新的对象。 结构 抽象原型&#xff08;Prototype&#xff09;&#xff1a;声明 clone() 方法&#xff0c;以便派生类实现克隆自身的能力。具体原型&#xff08…

电脑运行黑屏是什么原因?原因及解决方法

电脑运行黑屏是指电脑在正常开机或使用过程中&#xff0c;突然出现屏幕变黑&#xff0c;无法显示任何内容的现象。这种现象可能会给用户带来很多不便&#xff0c;甚至造成数据丢失或硬件损坏。那么&#xff0c;电脑运行黑屏是什么原因呢&#xff1f;下面我们将分析几种可能的原…

路由器如何进行数据包转发?

路由器进行数据包转发的过程是网络通信的核心之一&#xff0c;主要涉及以下几个步骤&#xff1a; 接收数据包&#xff1a;当一个数据包到达路由器的一个接口时&#xff0c;它首先被暂时存储在该接口的缓冲区中。 解析目标地址&#xff1a;路由器会检查数据包中的目标IP地址。…

MTGNN论文解读

模型架构 MTGNN 由多个模块组合而成&#xff0c;目标是捕捉多变量时间序列中的空间&#xff08;变量间&#xff09;和时间&#xff08;时序&#xff09;依赖。 图学习层&#xff1a;用于自适应地学习图的邻接矩阵&#xff0c;发现变量之间的关系。图卷积模块&#xff1a;根据邻…

π0开源了且推出自回归版π0-FAST——打造机器人动作专用的高效Tokenizer:比扩散π0的训练速度快5倍但效果相当

前言 过去的半个多月 deepseek火爆全球&#xff0c;我对其的解读也成了整整一个系列 详见《火爆全球的DeepSeek系列模型》&#xff0c;涉及对GRPO、MLA、V3、R1的详尽细致深入的解读 某种意义来讲&#xff0c;deepseek 相当于把大模型的热度 又直接拉起来了——相当于给大模…

多用户同时RDP登入Win10

自备以下文件&#xff1a; winsw_frpc.xml展开如下&#xff1a; <service><!-- ID of the service. It should be unique across the Windows system--><id>winsw_frp</id><!-- Display name of the service --><name>winsw_frp</na…

【STM32系列】利用MATLAB配合ARM-DSP库设计IIR数字滤波器(保姆级教程)

ps.源码放在最后面 设计FIR数字滤波器可以看这里&#xff1a;利用MATLAB配合ARM-DSP库设计FIR数字滤波器&#xff08;保姆级教程&#xff09; 设计IIR滤波器 MATLAB配置 设计步骤 首先在命令行窗口输入"filterDesigner"&#xff0c;接着就会跳出以下界面&#xf…