- N +

包含应用路由pod命名空间的简单介绍

包含应用路由pod命名空间的简单介绍原标题:包含应用路由pod命名空间的简单介绍

导读:

k8s中的namespace的资源限制实操命名空间在Kubernetes集群中扮演着关键角色,它提供了一个隔离环境,可使团队、用户或项目在共享集群资源的情况下保持独立性。在K...

k8s中的namespace资源限制实操

命名空间kubernetes集群中扮演着关键角色,它提供一个隔离环境,可使团队用户项目共享集群资源的情况保持独立性。在Kubernetes中,命名空间(NaMESpACEs)实现了资源隔离,使得不同团队、用户或项目在各自的命名空间内进行资源管理应用部署,避免了资源冲突和混淆。

K8s核心对象Namespace的学习指南如下:Namespace的作用 Namespace是Kubernetes中的一种虚拟集群划分机制。 它帮助组织和管理应用程序服务和资源,确保在同一集群中运行的不同应用和服务相互独立。Namespace的类型 默认Namespace:Kubernetes自带的Namespace,如default、kubesystem等。

使用kubectl命令创建deploymentService等K8s资源,部署应用程序可以通过Kuboard等可视化工具来简化部署和管理过程监控与管理:安装Metrics server等监控工具,监控集群中资源的利用率和性能。使用kubectl命令查看集群状态、管理资源和调试问题

资源模型设计 requests和limits:在K8s中,资源请求和资源限制是两个核心概念,分别代表Pod所需的最小资源和最大资源。这两个参数帮助K8s进行资源调度限额管理。node资源抽象:Capacity:表示节点的总资源量,如CPU核心数和内存大小。

包含应用路由pod命名空间的简单介绍

理解K8s的网络:Pods、services、ingress

1、K8s的网络理解,特别是PODs、Services和Ingress,可以总结如下:pods: 定义:Pods是构成Kubernetes应用的基本单元,包含了一个或多个容器以及它们共享的网络栈。 网络命名空间:Pods的网络命名空间与宿主机物理网络命名空间独立,通过自定义桥接与宿主机相连。

2、Ingress资源 定义:Ingress是用于在Kubernetes集群中暴露从集群外部访问的服务的一种方式,类似于一个7层负载均衡器。 功能:通过Ingress可以建立映射规则,将外部请求转发到集群内部的服务。Ingress Controller负责将这些规则转换nginx配置。 核心概念: 服务引入:定义哪些服务可以通过Ingress访问。

3、LoadBalancer类型的Service除了NodePort功能外,还会在集群外部添加负载均衡设备,以实现更广泛的外部访问。另一种提供服务暴露的资源是Ingress,它通过一个NodePort或LB实现多个服务的暴露。

4、Ingress 前面介绍内容都围绕Service,主要解决网络层的问题,Ingress的出现主要是解决应用层的问题。Ingress实际上充当一个反向代理的角色,和Nginx的功能很类似。Kubernetes中广泛使用的Nginx Ingress其本质就是一个Nginx服务。Ingress依赖LoadBalancer类型的Service,因为自己没有暴露集群内服务到外部的能力

5、Ingress 是在 Service 之上提出的概念,它在七层上实现了负载均衡,并作为集群的流量入口,统管集群的进出口数据。Ingress 的设计目标是让外部用户能够安全、顺畅、便捷地访问内部服务。通过引入 Ingress,Kubernetes 提供了更高级的路由条件,如主机名、URI、请求头、证书等,使得流量管理更加灵活

6、Ingress支持动态更新,无需重启应用或重建服务调整路由规则。通过更新Ingress对象,K8s自动更新负载均衡器配置,仅允许指定请求到达特定服务。

K8s网络组件-Calico

Calico是一种高效的容器网络方案,专为k8s等容器化平台设计,旨在实现容器间的高效互通与隔离控制。设计思想与优势: 三层路由转发:Calico不采用隧道或NAT技术,而是将所有二三层流量转换为三层流量,通过主机上的路由配置完成跨主机转发,从而避免了二层广播带来的复杂性和资源开销。

尽管存在挑战,Calico仍以其高效和灵活的优势,在k8s环境中成为容器网络管理的首选之一。其三层路由技术不仅优化了资源利用,还提高了网络的可扩展性和易调试性。通过合理的网络规划和设计,Calico能够克服其面临的挑战,为k8s集群提供稳定、高效的网络解决方案

速度: calico+ipip flannel+vxlan cilium+vlan 稳定性:cilium+vlan calico+ipip flannel+vxlan calico 作为老牌网络解决方案,可圈可点,已被 GitHub公司用于生产。flannel 配置简单,性能弱低于 calico,redis 测试中稍占上风。大并发下稳定性稍低。

// calico有两种模式:ipip(默认)、bgp,bgp效率更高。如果宿主机在同一个网段,可以使用ipip模式;如果宿主机不在同一个网段,pod通过BGP的hostGW是不可能互相通讯的,此时需要使用ipip模式(如果仍想使用bgp模式,除非你在中间路由器上手动添加路由)。

kubectl APPly -f calico.yaml calico客户端命令工具-calicoctl,可用来查看,修改calico配置 calico支持三种网络模式,可通过修过calico.yaml进行配置:下面分别进行配置验证,并分析数据流向 安装完calico,默认就是ipip模式。node之间是full mesh连接进入calico pod,查看运行的进程

不废话直接开干。网络环境需注意,k8s-node1处的30/24网段与其他三个节点网段不同。部署Vxlan CrossSubnet模式需对calico.yaml进行修改,将CALICO_IPV4POOL_IPIP设置为Never,CALICO_IPV4POOL_VXLAN设置为CrossSubnet。

pod和容器的关系是

1、包含关系,Pod和容器的关系是包含关系。在Kubernetes中,一个Pod可以包含一个或多个容器,每个容器都是一个独立运行的应用程序或服务的实例。这些容器共享相同的网络命名空间、存储卷和其他资源,形成了一个逻辑上的整体,使得它们可以作为一个整体进行部署和管理。

2、在 Kubernetes 中,Pod 是核心概念之一,对于容器和 Pod 之间的关系,我们需要明确理解。首先,Pod 并非实体,而是一个逻辑概念,它在集群上承载和协调容器的执行。Pod 是容器的容器,可以看作是云平台中的虚拟机,而容器则是虚拟机中的用户程序,共享网络、存储和资源,确保内部容器间的高效交互

3、容器与Pod之间的联系体现在它们都是Kubernetes核心组件,用于构建、部署和管理微服务架构。Pod负责管理一组相关的容器,并提供统一的网络与存储资源。容器则作为Pod中的基本运行单元,承载应用逻辑。容器提供了轻量级虚拟化环境,使得应用在不同环境中快速部署与运行成为可能。

4、Init 容器是一种特殊容器,在 Pod内的应用容器启动之前运行,通过 spec.initContainers 指定。Init 容器可以包括一些应用镜像中不存在的实用工具和安装脚本,用于在Pod应用容器启动之前做一些额外工作

5、Pod是Kubernetes的基本计算单元,它将一个或多个容器封装一起,并共享相同的名称空间和本地网络。Pod中的容器可以互相通信,仿佛它们在同一台机器上,同时保持一定程度的隔离。Pod被用作Kubernetes的复制单元,确保负载均衡和故障恢复。Pod应保持较小的规模通常只包含一个主进程和紧密耦合的辅助容器。

k8s部署-21-ingress-nginx实现原理和部署,并简单使用

1、Ingress 是在 Kubernetes 集群中对外提供服务访问管理的 API 对象,主要用于 HTTPHTTPS 的路由。Ingress 可以实现负载均衡、SSL 终结和基于名称的虚拟托管等功能。例如,可以将所有流量路由到集群内的同一服务。

2、根据确认版本下载Ingressnginx的安装文件。修改镜像地址:由于网络限制,可能会遇到访问registry.k8s.io中的镜像困难。将镜像地址从registry.k8s.io修改为k8s.dockerproxy.com,这可以参考dockerproxy.com文档中的解决方案。部署Ingressnginx:保存修改后的文件,并部署Ingressnginx。

3、保存修改后,即可部署Ingress-nginx,验证是否部署成功。查看部署结果,可使用ip访问ingress-nginx-controller,以检查部署状态。为验证Ingress功能,假设现有名为Hello-gradle”的应用,且其服务接口通过“/hello”路径映射,绑定域名“hello-gradle.com”。应用部署后,所有集群节点需配置host信息

4、不建议仅通过调整 Deployment 的副本数来实现高可用,因为 Ingress 承载了整个集群的流量。推荐做法:使用 DaemonSet 将 Ingress 部署到集群中的所有节点,并对这些节点设置特定标签。通过负载均衡技术将 Ingress 服务的节点作为后端服务器,以实现流量的稳定分发。

5、首先,了解使用ingress的基本原理。ingress支持两种对外暴露方式:HTTP和https。在进行HTTP暴露时,您可以创建一个自定义的服务,例如一个nginx服务,端口号设为80。通过ingress配置,即可实现通过域名http.fxwx.com访问此服务的主页。对于HTTPS暴露,需要配合使用secret来实现。

6、Ingress 控制器通过与 Kubernetes API 的交互动态地管理规则,根据配置将域名映射到相应的服务,生成 Nginx 配置并将其部署到运行 Nginx 的 Pod 中。这个配置会自动写入到 Nginx 服务的 `/etc/nginx.conf` 文件,从而实现实时的域名路由和动态更新。

返回列表
上一篇:
下一篇: