NodePort service

创建一个mysql的NodePort服务,对应两个pod实例,rc和service的配置如下:

1、rc配置

apiVersion: v1
kind: ReplicationController
metadata:
name: wordpress-mysql
spec:
replicas:
selector:
name: wordpress-mysql
template:
metadata:
labels:
name: wordpress-mysql
spec:
containers:
- name: wordpress-mysql
image: 172.16.114.201/library/mysql:v1
ports:
- containerPort:
volumeMounts:
- name: "wordpress-mysql-data"
mountPath: "/var/lib/mysql"
env:
- name: MYSQL_PASS
value: ""
- name: ON_CREATE_DB
value: "wordpress"
volumes:
- name: "wordpress-mysql-data"
hostPath:
path: "/root/wordpress-mysql/data"

2、service配置

apiVersion: v1
kind: Service
metadata:
name: wordpress-mysql
spec:
ports:
- port:
targetPort:
nodePort:
protocol: TCP
type: NodePort
selector:
name: wordpress-mysql

3、创建的service情况

Name:            wordpress-mysql
Namespace: default
Labels: <none>
Selector: name=wordpress-mysql
Type: NodePort
IP: 10.254.67.85
Port: <unset> /TCP
NodePort: <unset> /TCP
Endpoints: 10.0.3.2:,10.0.45.6:
Session Affinity: None
No events.

4、kube-proxy占用端口情况

[root@test- log]# netstat -anp | grep kube-proxy
tcp 127.0.0.1: 0.0.0.0:* LISTEN /kube-proxy
tcp 172.16.114.209: 172.16.114.208: ESTABLISHED /kube-proxy
tcp 172.16.114.209: 172.16.114.208: ESTABLISHED /kube-proxy
tcp 172.16.114.209: 172.16.114.208: ESTABLISHED /kube-proxy
tcp6 ::: :::* LISTEN /kube-proxy
unix [ ] DGRAM /kube-proxy
unix [ ] STREAM CONNECTED /kube-proxy

5、对应的iptables规则

iptables -S -t nat | grep mysql
-A KUBE-NODEPORTS -p tcp -m comment --comment "default/wordpress-mysql:" -m tcp --dport -j KUBE-MARK-MASQ
-A KUBE-NODEPORTS -p tcp -m comment --comment "default/wordpress-mysql:" -m tcp --dport -j KUBE-SVC-GJ6HULPZPPQIKMS7
-A KUBE-SEP-7KXQQUXVSZ2LFV44 -s 10.0.45.6/ -m comment --comment "default/wordpress-mysql:" -j KUBE-MARK-MASQ
-A KUBE-SEP-7KXQQUXVSZ2LFV44 -p tcp -m comment --comment "default/wordpress-mysql:" -m tcp -j DNAT --to-destination 10.0.45.6:
-A KUBE-SEP-J7SZJXRP24HRFT23 -s 10.0.3.2/ -m comment --comment "default/wordpress-mysql:" -j KUBE-MARK-MASQ
-A KUBE-SEP-J7SZJXRP24HRFT23 -p tcp -m comment --comment "default/wordpress-mysql:" -m tcp -j DNAT --to-destination 10.0.3.2:
-A KUBE-SERVICES -d 10.254.67.85/ -p tcp -m comment --comment "default/wordpress-mysql: cluster IP" -m tcp --dport -j KUBE-SVC-GJ6HULPZPPQIKMS7
-A KUBE-SVC-GJ6HULPZPPQIKMS7 -m comment --comment "default/wordpress-mysql:" -m statistic --mode random --probability 0.50000000000 -j KUBE-SEP-J7SZJXRP24HRFT23
-A KUBE-SVC-GJ6HULPZPPQIKMS7 -m comment --comment "default/wordpress-mysql:" -j KUBE-SEP-7KXQQUXVSZ2LFV44

从以上信息看出,kube-proxy为mysql服务在node节点上单独起了一个端口30010,在iptables的规则中,目的端口30010被指向KUBE-SVC-GJ6HULPZPPQIKMS7,KUBE-SVC-GJ6HULPZPPQIKMS7又被指向KUBE-SEP-J7SZJXRP24HRFT23和KUBE-SEP-7KXQQUXVSZ2LFV44(他两各50%的几率),KUBE-SEP-J7SZJXRP24HRFT23和KUBE-SEP-7KXQQUXVSZ2LFV44定义了DNAT转换规则,将访问重定向到10.0.45.6:3306和10.0.3.2:3306这两个endpoint。因此,当外部访问30010端口时,根据iptables的规则会将该消息分发给10.0.45.6:3306和10.0.3.2:3306这两个地址(分发的几率是各50%)

ClusterIP service

创建一个zookeeper的ClusterIP服务,rc和service的配置如下:

1、rc配置

apiVersion: v1
kind: ReplicationController
metadata:
name: zookeeper1
spec:
replicas:
selector:
name: zookeeper1
template:
metadata:
labels:
name: zookeeper1
spec:
containers:
- name: zookeeper1
image: 10.10.30.166/public/zookeeper:v1
ports:
- containerPort:
- containerPort:
- containerPort:
env:
- name: ZOOKEEPER_ID
value: ""
- name: ZOOKEEPER_SERVER_1
value: "zookeeper1"
- name: ZOOKEEPER_SERVER_2
value: "zookeeper2"
- name: ZOOKEEPER_SERVER_3
value: "zookeeper3"

2、service配置

apiVersion: v1
kind: Service
metadata:
name: zookeeper1
spec:
ports:
- port:
targetPort:
protocol: TCP
name: ""
- port:
targetPort:
protocol: TCP
name: ""
- port:
targetPort:
protocol: TCP
name: ""
type: ClusterIP
selector:
name: zookeeper1

3、创建service情况

Name:            zookeeper1
Namespace: default
Labels: <none>
Selector: name=zookeeper1
Type: ClusterIP
IP: 10.254.181.6
Port: /TCP
Endpoints: 10.0.45.4:
Port: /TCP
Endpoints: 10.0.45.4:
Port: /TCP
Endpoints: 10.0.45.4:
Session Affinity: None
No events.

4、iptables规则

iptables -S -t nat | grep zookeeper1
-A KUBE-SEP-BZJZKIUQRVYJVMQB -s 10.0.45.4/ -m comment --comment "default/zookeeper1:3" -j KUBE-MARK-MASQ
-A KUBE-SEP-BZJZKIUQRVYJVMQB -p tcp -m comment --comment "default/zookeeper1:3" -m tcp -j DNAT --to-destination 10.0.45.4:
-A KUBE-SEP-C3J2QHMJ3LTD3GR7 -s 10.0.45.4/ -m comment --comment "default/zookeeper1:2" -j KUBE-MARK-MASQ
-A KUBE-SEP-C3J2QHMJ3LTD3GR7 -p tcp -m comment --comment "default/zookeeper1:2" -m tcp -j DNAT --to-destination 10.0.45.4:
-A KUBE-SEP-RZ4H7H2HFI3XFCXZ -s 10.0.45.4/ -m comment --comment "default/zookeeper1:1" -j KUBE-MARK-MASQ
-A KUBE-SEP-RZ4H7H2HFI3XFCXZ -p tcp -m comment --comment "default/zookeeper1:1" -m tcp -j DNAT --to-destination 10.0.45.4:
-A KUBE-SERVICES -d 10.254.181.6/ -p tcp -m comment --comment "default/zookeeper1:1 cluster IP" -m tcp --dport -j KUBE-SVC-HHEJUKXW5P7DV7BX
-A KUBE-SERVICES -d 10.254.181.6/ -p tcp -m comment --comment "default/zookeeper1:2 cluster IP" -m tcp --dport -j KUBE-SVC-2SVOYTXLXAXVV7L3
-A KUBE-SERVICES -d 10.254.181.6/ -p tcp -m comment --comment "default/zookeeper1:3 cluster IP" -m tcp --dport -j KUBE-SVC-KAVJ7GO67HRSOAM3
-A KUBE-SVC-2SVOYTXLXAXVV7L3 -m comment --comment "default/zookeeper1:2" -j KUBE-SEP-C3J2QHMJ3LTD3GR7
-A KUBE-SVC-HHEJUKXW5P7DV7BX -m comment --comment "default/zookeeper1:1" -j KUBE-SEP-RZ4H7H2HFI3XFCXZ
-A KUBE-SVC-KAVJ7GO67HRSOAM3 -m comment --comment "default/zookeeper1:3" -j KUBE-SEP-BZJZKIUQRVYJVMQB

从iptables的规则来看,对目的ip是10.254.181.6,端口是2181、2888或者3888的消息,规则指向了KUBE-SVC-HHEJUKXW5P7DV7BX、KUBE-SVC-2SVOYTXLXAXVV7L3、KUBE-SVC-KAVJ7GO67HRSOAM3,他们三又分别指向了KUBE-SEP-C3J2QHMJ3LTD3GR7、KUBE-SEP-RZ4H7H2HFI3XFCXZ、KUBE-SEP-BZJZKIUQRVYJVMQB,这三条规则定义了DNAT转换规则,将访问重定向到了10.0.45.4:3888、10.0.45.4:2888、10.0.45.4:2181

分析kube-proxy的iptables规则的更多相关文章

  1. Linux 为FTP 服务器添加iptables规则--案例分析

    一.故障描述 由于开发提出需求,为他们搭建内部ftp服务器,搭建好后,提交给他们,测试可以正常使用.后来过了一段时间后,有一天无法登陆了.于是去ftp主机上检查问题,ftp的配置文件没有改动,端口监听 ...

  2. iptables规则进阶

    iptables规则进阶 1.实验环境搭建: 在进行试验之前,先要进行实验环境的搭建,要求如下: 1.对于三台主机,分别设置IP地址 2.设置10.0.1.22为内网主机 3.设置中间主机有两个网卡, ...

  3. Iptables 规则 一些简单实例和详细介绍

    设定规则 iptables -p INPUT DROP iptables -p OUTPUT ACCEPT iptables -p FORWARD DROP 1.防止外网用内网IP欺骗 iptable ...

  4. iptables规则表

    1.iptables规则表 Filter(针对过滤系统):INPUT.FORWARD.OUTPUT NAT(针对地址转换系统):PREROUTING.POSTROUTING.INPUT.OUTPUT ...

  5. linux iptables规则介绍

    今天又学习了一下iptables,做一点总结来方便以后查阅. Netfilter(网络过滤器)是Linux操作系统核心层内部的一个数据包处理模块,主要负责数据包的拦截和转发,而iptables是Net ...

  6. debian6保存iptables规则

    iptables规则不保存,一旦机器重启规则就清空了,所以需要保存: iptables-save >/etc/iptables-script vi /etc/rc.local 然后在文件中输入: ...

  7. linux系统中查看己设置iptables规则

    1.iptables -L 查看filter表的iptables规则,包括所有的链.filter表包含INPUT.OUTPUT.FORWARD三个规则链. 说明:-L是--list的简写,作用是列出规 ...

  8. ifconfig 命令,改变主机名,改DNS hosts、关闭selinux firewalld netfilter 、防火墙iptables规则

    ifconfig 命令用于查看网络相关的命令: 安装:yum install net-tools -y  ifdown  eth_name  关闭网卡  ifup  eth_name   开启网卡 配 ...

  9. 常用的 Linux iptables 规则

    一些常用的 Linux iptables 规则,请根据自己的具体需要再修改. 转载自:http://mp.weixin.qq.com/s/uAPzh9_D4Qk6a3zBh7Jq5A # 1. 删除所 ...

随机推荐

  1. Fedora 中的容器技术:systemd-nspawn

    本文将说明你可以怎样使用 Fedora 中各种可用的容器技术和学习“systemd-nspawn”的相关知识. 容器是什么? 一个容器就是一个用户空间实例,它能够在与托管容器的系统(叫做宿主系统)相隔 ...

  2. 转:超实用的IOS 9人机界面指南(1):UI设计基础 (腾讯力作)

    转: http://www.uisdc.com/ios9-interface-guideline-ui

  3. elastic不错的官方文档(中文)

    https://www.blog-china.cn/template/documentHtml/1484101683485.html http://www.open-open.com/doc/list ...

  4. BEA公司的weblogic是什么?有什么特点?

    转自:http://zhidao.baidu.com/link?url=J9obKwHhuh1sdLoBC3pILeaq1nz_tcpScggBNeS3D0GzAz9FI002vlS2xxJD4_z6 ...

  5. M.U.G.E.N Error怎么办

    当运行乱舞格斗2008的时候出现以下错误. 在任务管理器中找到M.U.G.E.N.exe这个进程,右击设置相关性,然后取消勾选其中一个,点击确定. 不要关闭这个窗口,否则M.U.G.E.N这个进程也将 ...

  6. 主动通知Android系统图库进行更新

    项目中遇到调用图库进行图片的选择,因为不能主动及时更新,遂实现代码调用实现主动及时更新. 废话不多刷,看代码. 方式一,发送一个广播, sendBroadcast(new Intent(Intent. ...

  7. java中Queue接口

    Queue接口与List.Set同一级别,都是继承了Collection接口.LinkedList实现了Queue接 口.Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类 ...

  8. Chrome扩展之css used 获取网页样式

    地址栏输入: chrome://extensions/ 然后获取更多扩展程序,得到css used 复制html节点 最后点击 "css used" 把样式全部复制下来即可 (记住 ...

  9. 算法笔记_106:蓝桥杯练习 算法提高 周期字串(Java)

    目录 1 问题描述 2 解决方案 2.1 第一印象解法(80分) 2.2 借鉴网友解法(100分)   1 问题描述 问题描述 右右喜欢听故事,但是右右的妈妈总是讲一些“从前有座山,山里有座庙,庙里有 ...

  10. 算法笔记_072:N皇后问题(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 把n个皇后放在一个n*n的棋盘上,使得任何两个皇后都不能相互攻击,即它们不能同行,不能同列,也不能位于同一条对角线上. 2 解决方案 本文采用全排列 ...