小白到运维工程师自学之路 第七十四集 (kubernetes基于calico部署应用nginx)

news2024/11/24 14:25:24

一、详细介绍calico

Calico 是一种基于 BGP 的、纯三层的、容器间互通的网络方案。与 OpenStack、Kubenetes、AWS、GCE 等云平台都能够良好的集成。在虚拟化平台中,如 OpenStack、Docker 等都需要实现 workloads 之间互连,但同时也需要对容器做隔离控制,就像在Internet 中的服务仅开放 80 端口、公有云的多租户一样,提供隔离和管控机制。

而在多数的虚拟化平台实现中,通常使用二层隔离技术来实现容器的网络,这些二层技术有一些弊端,比如需要依赖 VLAN、bridge 和隧道等技术。其中 bridge 带来了复杂性,vlan 隔离和 tunnel 隧道则消耗更多的资源并对物理环境有要求,随着网络规模的增大,整体会变得越加复杂。我们尝试把 Host 当作 Internet 中的路由器,同样使用 BGP 同步路由,并使用 Iptables 来做安全访问策略,最终设计出了 Calico 方案。

(1)Calico 网络模型工作组件

  1. Felix:运行在每一台 Host 的 agent 进程,主要负责网络接口管理和监听、路由、ARP管理、ACL 管理和同步、状态上报等。

  2. etcd:分布式键值存储,主要负责网络元数据一致性,确保 Calico 网络状态的准确性,可以与 kubernetes 共用;

  3. BGP Client(BIRD):Calico 为每一台 Host 部署一个 BGP Client,使用 BIRD 实现。BIRD 是一个单独的持续发展的项目,实现了众多动态路由协议比如 BGP、OSPF、RIP 等。在 Calico 的角色是监听 Host 上由 Felix 注入的路由信息,然后通过 BGP 协议广播告诉剩余 Host 节点,从而实现网络互通。

  4. BGP Route Reflector:在大型网络规模中,如果仅仅使用 BGP client 形成 mesh 全网互联的方案就会导致规模限制,因为所有节点之间俩俩互联,需要 N^2 个连接,为了解决这个规模问题,可以采用 BGP 的 Router Reflector 的方法,使所有 BGP Client仅与特定 RR 节点互联并做路由同步,从而大大减少连接数。

  5. CalicoCtl:Calico 命令行管理工具。

(2)Calico 网络 Node 之间两种网络

  1. IPIP

从字面来理解,就是把一个 IP 数据包又套在一个 IP 包里,即把 IP 层封装到 IP 层的一个 tunnel。它的作用相当于一个基于 IP 层的网桥。一般来说,普通的网桥是基于 mac 层的,根本不需 IP,而这个 ipip 则是通过两端的路由做一个 tunnel,把两个本来不通的网络通过点对点连接起来。

  1. BGP

边界网关协议(Border Gateway Protocol, BGP)是互联网上一个核心的去中心化自治路由协议。它通过维护 IP 路由表或‘前缀’表来实现自治系统(AS)之间的可达性,属于矢量路由协议。BGP 不使用传统的内部网关协议(IGP)的指标,而使用基于路径、网络策略或规则集来决定路由。因此,它更适合被称为矢量性协议,而不是路由协议。BGP通俗的讲就是讲接入到机房的多条线路(如电信、联通、移动等)融合为一体,实现多线单 IP,BGP 机房的优点:服务器只需要设置一个 IP 地址,最佳访问路由是由网络上的骨干路由器根据路由跳数与其它技术指标来确定的,不会占用服务器的任何系统。

二、部署Calico网络插件(需要k8s集群)

calico.yaml直接去网上下载就可以了

https://docs.projectcalico.org/manifests/calico.yaml

kubectl apply -f calico.yaml 

查看node节点状态
kubectl get nodes
查看所有pod状态
kubectl get pod --all-namespaces

下载完成

三、部署nginx应用

创建命名空间
kubectl create ns policy-demo

在 policy-demo 命名空间中创建两个副本的 Nginx Pod
vim nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  namespace: policy-demo
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

 

执行yaml文件
kubectl apply -f nginx-deployment.yaml

 

查看pod状态
kubectl get pod -n policy-demo

 下载完成

通过服务暴露nginx的80端口
kubectl expose --namespace=policy-demo deployment nginx --port=80

查看详细信息
kubectl get all -n policy-demo

通过 busybox 的 Pod 去访问 Nginx 服务
kubectl run --namespace=policy-demo access --rm -ti --image busybox /bin/sh

进入busybox输入(这个O是大写的)
wget -q nginx -O -

以上就是k8s基于calico部署应用nginx的具体操作

如有错误欢迎各位大佬批评指正,我们共同进步

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

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

相关文章

梅赛德斯-奔驰将成为首家集成ChatGPT的汽车制造商

ChatGPT的受欢迎程度毋庸置疑。OpenAI这个基于人工智能的工具,每天能够吸引无数用户使用,已成为当下很受欢迎的技术热点。因此,有许多公司都在想方设法利用ChatGPT来提高产品吸引力,卖点以及性能。在汽车领域,梅赛德斯…

抓包工具Fiddler下载与安装

一、Fiddler介绍 1.Fiddler简介 Fiddler 是一款免费、灵活、操作简单、功能强大的 HTTP 代理工具,是目前最常用的 HTTP 抓包工具之一。可以抓取所有的 HTTP/HTTPS 包、过滤会话、分析请求详细内容、伪造客户端请求、篡改服务器响应、重定向、网络限速、断点调试等…

GPT-4 如何为我编写测试

ChatGPT — 每个人都在谈论它,每个人都有自己的观点,玩起来很有趣,但我们不是在这里玩— 我想展示一些实际用途,可以帮助您节省时间并提高效率。 我在本文中使用GPT-4 动机 我们以前都见过这样的情况——代码覆盖率不断下降的项目——部署起来越来越可怕,而且像朝鲜一样…

POJ 2429 Miller-rabin素数判定 + pollard-rho质因子分解 + 埃氏筛法

题目不能说是很难,只是用到了许多数学上的知识(费马小定理,miller-radin,pollard-rho),还有一些算法上的知识DFS,辗转相除。 我也很菜,一个周末的时间都用在这个题目上了&#xff0…

软考第二章 信息技术发展

本章内容:软件硬件、网络、存储、新技术。 文章目录 2.1 信息技术及其发展2.1.1 计算机硬件2.1.2 计算机网络2.1.3 存储和数据库2.1.4 信息安全 2.2 新一代信息技术2.2.1 物联网2.2.2 云计算2.2.3 大数据2.2.4 区块链2.2.5 人工智能虚拟现实 2.1 信息技术及其发展 …

EXCEL按列查找,最终返回该列所需查询序列所对应的值,VLOOKUP函数

EXCEL按列查找,最终返回该列所需查询序列所对应的值 示例:国标行业分类汉字,匹配id 使用VLOOKUP函数 第一参数:拿去查询的值。 第二参数:匹配的数据。 Ps:Sheet1!$C 21 : 21: 21:E 117 ,需要…

通过版本号控制强制刷新浏览器或清空浏览器缓存

背景介绍 在我们做 web 项目时,经常会遇到一个问题就是,需要 通知业务人员(系统用户)刷新浏览器或者清空浏览器 cookie 缓存的情况。 而对于用户而言,很多人一方面不懂如何操作,另一方面由于执行力问题&am…

屏蔽socket 实例化时,握手阶段报错信息WebSocket connection to ‘***‘ failed

事情起因是这样的: 我们网站是需要socket链接实行实时推送服务,有恶意竞争对手通过抓包或者断网,获取到了我们的socket链接地址,那么他就可以通过java写一个脚本无限链接这个socket地址。形成dos攻击。使socket服务器资源耗尽&…

基于FPGA的FM信号解调

这是本人第一次写博客,写的不好请多多担待。 本次实验是将一个已知的FM信号通过FPGA进行解调,解调出波形并进行FFT得到调制频率fm,并且每一步都通过MATLAB进行波形的验证。 开发工具 VIVADO 2019.2MATLABFM解调 已知FM信号的载波频率fc为22…

基于LVQ神经网络的乳腺肿癌诊断

1.案例背景 1.1 LVQ 神经网络概述 学习向量量化(Learning Vector Quantization,LVQ)神经网络是一种用于训练竞争层的有监督学习(supervisedlearning)方法的输人前向神经网络,其算法是从Kohonen竞争算法演化而来的。LVQ神经网络在模式识别和优化领域有着广泛的应用。 1…

【Sklearn】基于逻辑回归算法的数据分类预测(Excel可直接替换数据))

【Sklearn】基于逻辑回归算法的数据分类预测(Excel可直接替换数据) 1.模型原理2.模型参数3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果 1.模型原理 逻辑回归是一种用于二分类问题的统计学习方法,尽管名字中含有“回归”&#xff0c…

Redis 缓存过期及删除

一、Redis缓存过期策略 物理内存达到上限后,像磁盘空间申请虚拟内存(硬盘与内存的swap),甚至崩溃。 内存与硬盘交换 (swap) 虚拟内存,频繁I0 性能急剧下降,会造成redis内存急剧下降; 一般设置物理内存的3/4,在redis…

Java算法_ 二叉树的中序遍历(LeetCode_Hot100)

题目描述:给定一个二叉树的根节点 ,返回 它的 中序 遍历 。root 获得更多?算法思路:代码文档,算法解析的私得。 运行效果 完整代码 import java.util.ArrayList; import java.util.List;/*** 2 * Author: LJJ* 3 * Date: 2023/8/…

PyTorch深度学习实践---笔记

PyTorch深度学习实践---笔记 2.线性模型(Linear Model)2.exercise 3. 梯度下降算法(Gradient Descent)3.1梯度下降(Gradient Descent)3.2 随机梯度下降(Stochastic Gradient Descent&#xff09…

编译OpenCV问题解决:已经编译OpenCV成功之后无法运行测试代码

报错问题如下&#xff1a; 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2001 无法解析的外部符号 "void __cdecl cv::imshow(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class c…

【腾讯云 Cloud Studio 实战训练营】在线 IDE 编写 canvas 转换黑白风格头像

关于 Cloud Studio Cloud Studio 是基于浏览器的集成式开发环境(IDE)&#xff0c;为开发者提供了一个永不间断的云端工作站。用户在使用Cloud Studio 时无需安装&#xff0c;随时随地打开浏览器就能在线编程。 Cloud Studio 作为在线IDE&#xff0c;包含代码高亮、自动补全、Gi…

GIt Squash 多个提交压缩提交

假设你有一个名为 feature 的分支&#xff0c;它包含三个提交&#xff08;A, B, C&#xff09;&#xff0c;并且你想将这三个提交压缩成一个。下面是如何做到这一点的。 首先&#xff0c;找出你要开始压缩的那个最早提交的哈希值。在这个例子中&#xff0c;我们假设 A 是最早的…

RK3588平台开发系列讲解(AI 篇)RKNPU 推理软件框架

文章目录 一、推理软件框架二、RKNN 模型三、学习步骤整理沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要讲解什么是RKNPU。 一、推理软件框架 RKNPU 硬件层 RKNPU 驱动层 RKNPU 的驱动层是连接上层应用和 RKNPU 硬件的桥梁。驱动层的主要作用是将应用程序…

Health Kit基于数据提供专业方案,改善用户睡眠质量

什么是CBT-I? 中国社科院等机构今年发布的《中国睡眠研究报告2023》内容显示&#xff0c;2022年&#xff0c;受访者的每晚平均睡眠时长为7.40小时&#xff0c;近半数受访者的每晚平均睡眠时长不足8小时(47.55%)&#xff0c;16.79%的受访者的每晚平均睡眠时长不足7小时。这些数…

shell脚本和解释器

shell脚本和解释器 #!是shell脚本文件的标识&#xff0c;/bin/bash代表要使用的解析器&#xff0c;#是注释符号 test.sh #!/bin/bashls whoami #下面这条命令会执行失败&#xff0c;但不会影响其他命令的执行 cat /etc/shadow ps对于上面的脚本文件&#xff0c;后缀是.sh或者…