举例:Network Policies
本文描述了如何在 Kubernetes 集群中通过创建 NetworkPolicy 的方式来声明网络策略,以管理 Pod 之间的网络通信流量。
前提条件
您已经安装了 Kubernetes 集群,如果没有,请参考文档 安装Kubernetes单Master节点
您可以使用 kubectl 访问您的集群,请参考文档 安装Kubectl
请确保您使用的网络插件支持 Network Policy,如下的网络插件都是可以的:
如果您按照 安装Kubernetes单Master节点 安装的集群,默认是 calico 网络插件
排序
按字母顺序排序,不代表推荐顺序。本文中的例子对上述所有网络插件都有效
创建一个Deployment并配置Service
- 创建一个
nginxDeployment 用于演示 Kubernetes 的 NetworkPolicy:
kubectl create deployment nginx --image=nginx
输出结果
deployment.apps/nginx created
通过Service暴露该Deployment
kubectl expose deployment nginx --port=80
输出结果
service/nginx exposed
查询结果
kubectl get svc,pod
输出结果
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes 10.100.0.1 <none> 443/TCP 46m
service/nginx 10.100.0.16 <none> 80/TCP 33s
NAME READY STATUS RESTARTS AGE
pod/nginx-701339712-e0qfq 1/1 Running 0 35s
从另外一个pod访问Service
默认是可以从另外一个Pod访问 nginx Service 的。下面的方法可以执行此测试:
在 default 名称空间中创建 busybox 容器,并执行 wget 命令:
kubectl run --generator=run-pod/v1 busybox --rm -ti --image=busybox -- /bin/sh
请按照下面的例子,在命令行中执行 wget --spider --timeout=1 nginx
Waiting for pod default/busybox-472357175-y0m47 to be running, status is Pending, pod ready: false
Hit enter for command prompt
/ # wget --spider --timeout=1 nginx
Connecting to nginx (10.100.0.16:80)
remote file exists
/ #
限制对nginx的访问
下面的 NetworkPolicy 可以声明:只有带 access=true 标签的 Pod 可以访问 nginx 服务:
network-policy.yaml文件内容
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: access-nginx
spec:
podSelector:
matchLabels:
app: nginx
ingress:
- from:
- podSelector:
matchLabels:
access: "true"
执行命令以创建该 NetworkPolicy:
kubectl apply -f network-policy.yaml
输出结果如下:
networkpolicy.networking.k8s.io/access-nginx created
从不带标签的Pod访问nginx服务
如果从不带标签的 Pod 访问该 nginx 服务,请求将超时:
kubectl run --generator=run-pod/v1 busybox --rm -ti --image=busybox -- /bin/sh
请按照下面的例子在命令行中执行 wget --spider --timeout=1 nginx
Waiting for pod default/busybox-472357175-y0m47 to be running, status is Pending, pod ready: false
Hit enter for command prompt
/ # wget --spider --timeout=1 nginx
Connecting to nginx (10.100.0.16:80)
wget: download timed out
/ #
从带有标签的Pod访问nginx服务
从带有 access=true 标签的 Pod 中访问 nginx 服务,将能够执行成功:
kubectl run --generator=run-pod/v1 busybox --rm -ti --labels="access=true" --image=busybox -- /bin/sh
请按照下面的例子在命令行中执行 wget --spider --timeout=1 nginx
Waiting for pod default/busybox-472357175-y0m47 to be running, status is Pending, pod ready: false
Hit enter for command prompt
/ # wget --spider --timeout=1 nginx
Connecting to nginx (10.100.0.16:80)
remote file exists
/ #
举例:Network Policies的更多相关文章
- routing decisions based on paths, network policies, or rule-sets configured by a network administrator
https://en.wikipedia.org/wiki/Border_Gateway_Protocol Border Gateway Protocol (BGP) is a standardize ...
- Improving Network Management with Software Defined Networking
Name of article:Improving Network Management with Software Defined Networking Origin of the article ...
- 边界网关协议BGP
Border Gateway Protocol (BGP) is a standardized exterior gateway protocol designed to exchange routi ...
- (zhuan) Deep Reinforcement Learning Papers
Deep Reinforcement Learning Papers A list of recent papers regarding deep reinforcement learning. Th ...
- Attacks for RL
1. http://rll.berkeley.edu/adversarial/ Adversarial Attacks on Neural Network Policies 就是对test时候的p ...
- Software-Defined Networking A Comprehensive Survey --阅读_day2
3. 什么是SDN?(WHAT IS SOFTWARE-DEFINED NETWORKING?) The term SDN was originally coined to represent the ...
- Software-Defined Networking A Comprehensive Survey --阅读_day1
The Internet has led to the creation of a digital society, where (almost) everything is connected an ...
- 在windows中安装OpenSSH,无密码登录,永远不断线
到这里下载最新安装包:https://github.com/PowerShell/Win32-OpenSSH/releases下载下来解压,然后用管理员打开服务器自带的PowerShell,运行下列命 ...
- ospf 提升 二 ---LSA
ospf ABR和ASBR的区别 官方建议中大型网络的规模参考 根据spf算法 而不是路由器的硬件性能强弱 a ABR最多关联3个区域 b 单区域内路由器最多50台 c 一台运行ospf的路由 ...
随机推荐
- Identity Server 4资源拥有者密码认证控制访问API
基于上一篇文章中的代码进行继续延伸,只需要小小的改动即可,不明白的地方可以先看看本人上一篇文章及源码: Identity Server 4客户端认证控制访问API 一.QuickStartIdenti ...
- 你真的了解JAVA中对象和类、this、super和static关键字吗
作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功.JAVA底层.面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」 目录 Java对象究竟是什么? 创建对象的过程 ...
- windows10:vscode下go语言的适配
ps:本篇依赖golang的sdk已经安装完成: url:https://www.cnblogs.com/mrwhite2020/p/16475731.html 一.下载vscode,选择wind ...
- super详解(继承)
//在Java中,所有的类,都默认直接或者间接继承objec类// Person 人 :父类public class Person /*extends object*/ { public Person ...
- Solution -「Luogu 4135」作诗
写在前面 & 前置芝士 好像是好久没有打理 blog 了.感觉上学期是有点颓.嘶,初三了好好冲一次吧. 那么回到这道题目.你会分块就能看懂. 题目大意 先挂个来自洛谷的 link. ...
- 第十九天python3 json和messagepack
json的数据类型官网:https://www.json.org/ 值: 双引号内的字符串,数值,true和false,null,对象,数组:字符串: 双引号内的任意字符的组合,可以有专一字符:数值: ...
- 第十七天python3 文件IO(三)
CSV文件 csv是一个被行分隔符.列分隔符化分成行和列的文本文件: csv不指定字符编码: 行分隔符为\r\n,最后一行可以没有换行符: 列分隔符常为逗号或者制表符: 每一行称为一条记录record ...
- python 常用的魔法函数
简介 在实际项目中,我们其实并不会太多的使用魔法函数,但是一些方法或者函数均是有魔法函数演变而来的,且在一些面试过程中会遇到一些关于常见方法的实现,就会牵扯到相应的魔法函数,此处将介绍一些我认为比较常 ...
- 2506-nginx的配置-域名分发与负载均衡(只有配置无原理)
nginx的安装 Windows7:官网下载,是一个压缩包,运行解压缩后的exe文件即启动了nginx,需注意的是,Windows(win7)的80端口默认被微软的IIS占用,需改成别的端口,例如80 ...
- 模态框➕穿梭框。demo (jq项目)
1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset=" ...