k8s使用calico网络插件时,Nodeport 仅在指定节点暴露端口+防火墙策略配置方法

本文主要是介绍k8s使用calico网络插件时,Nodeport 仅在指定节点暴露端口+防火墙策略配置方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

我们在内网使用k8s时,对外暴露的服务通常是通过Nodport出去的,但是,Nodeport存在下面几个问题:

  1. Nodeport会在集群所有节点都暴露端口,有时候我们只希望在其中一两台暴露端口
  2. Nodeport暴露的端口无法通过firewall管理,无法限制端口访问来源,有时会存在安全问题。

k8s默认支持一些网络策略的设置,可以参考 k8s NetworkPolicy 介绍,但是,这些策略仅能对k8s里面的pod,对于Nodeport这种无法设置。
幸运的是,如果我们使用k8s的网络插件是calico,可以通过calico的扩展功能来完成 Nodeport 仅在指定节点暴露端口以及针对整个k8s集群内节点的防火墙设置。

关于集群防火墙设置的基础操作,请参考 k8s使用calico网络插件时,集群内节点防火墙策略配置方法,默认禁用全部访问的操作请参考该文档。
在全部禁用以后,我们可以选择几个心仪的节点开放端口了,下面以开放端口32050为例:

首先选择要开放的节点,编辑之前声明好的HostEndpointkubectl edit HostEndpoint xxx ,编辑里面的labels,打上一个特定的标签,比如 open-node。(忘记了之前的HostEndpoint叫什么可以先查看: kubectl get HostEndpoint

然后新建一个网络策略,优先级设置的比之前创建的拒绝全部访问的策略高(order越小小优先级越高),前面博客中创建的默认order为20,这里可以随便设置一个order小于20的,加入我们要开放32050端口,参考的配置如下:

apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:name: allow-my-service
spec:
# 生效顺序从小到大排序,这里设置的较小,优先生效order: 10preDNAT: trueapplyOnForward: trueingress:# 接受目标端口为32050的所有请求- action: Allowdestination:# 配置方法可以参考  https://docs.tigera.io/calico/latest/reference/resources/networkpolicy#entityruleports:- 32050selector: has(open-node)   # 选择器。选择了包含open-node标签的所有HostEndpoint

这里还可以设置只允许指定来源的ip,排除指定来源的ip,排除指定端口,选择指定端口。具体规则设置方法请参考: calico官方文档

这篇关于k8s使用calico网络插件时,Nodeport 仅在指定节点暴露端口+防火墙策略配置方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/967078

相关文章

springboot security使用jwt认证方式

《springbootsecurity使用jwt认证方式》:本文主要介绍springbootsecurity使用jwt认证方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录前言代码示例依赖定义mapper定义用户信息的实体beansecurity相关的类提供登录接口测试提供一

go中空接口的具体使用

《go中空接口的具体使用》空接口是一种特殊的接口类型,它不包含任何方法,本文主要介绍了go中空接口的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录接口-空接口1. 什么是空接口?2. 如何使用空接口?第一,第二,第三,3. 空接口几个要注意的坑坑1:坑2:坑3:接口-空接口1. 什么是空接

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

springboot security快速使用示例详解

《springbootsecurity快速使用示例详解》:本文主要介绍springbootsecurity快速使用示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录创www.chinasem.cn建spring boot项目生成脚手架配置依赖接口示例代码项目结构启用s

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

springboot security之前后端分离配置方式

《springbootsecurity之前后端分离配置方式》:本文主要介绍springbootsecurity之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录前言自定义配置认证失败自定义处理登录相关接口匿名访问前置文章总结前言spring boot secu

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则