[k8s]k8s pod的4种网络模式最佳实战(externalIPs )
hostPort相当于docker run -p 8081:8080,不用创建svc,因此端口只在容器运行的vm上监听
缺点: 没法多pod负载
$ cat pod-hostport.yaml
apiVersion: v1
kind: Pod
metadata:name: webapplabels:app: webapp
spec:containers:- name: webappimage: tomcatports:- containerPort: 8080hostPort: 8081$ kubectl get po --all-namespaces -o wide --show-labels
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE LABELS
default webapp 1/1 Running 0 5s 10.2.100.3 n2.ma.com app=webapp[root@n2 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
59e72c92ba55 tomcat "catalina.sh run" 2 minutes ago Up 2 minutes k8s_webapp_webapp_default_932c613e-e2dc-11e7-8313-00505636c956_0
0fe8c2f08e03 gcr.io/google_containers/pause-amd64:3.0 "/pause" 2 minutes ago Up 2 minutes 0.0.0.0:8081->8080/tcp k8s_POD_webapp_default_932c613e-e2dc-11e7-8313-00505636c956_0
hostNetwork相当于 docker run --net=host ,不用创建svc,因此端口只在容器运行的vm上监听
缺点: 没法多pod负载
apiVersion: v1
kind: Pod
metadata:name: webapplabels:app: webapp
spec:hostNetwork: truecontainers:- name: webappimage: tomcatports:- containerPort: 8080$ kubectl get po --all-namespaces -o wide --show-labels
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE LABELS
default webapp 1/1 Running 0 36s 192.168.x.x n2.ma.com app=webapp查看该pod的网卡, 发现和宿主机一致
$ docker exec -it b8a1e1e35c3e ip ad
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:50:56:33:13:b6 brd ff:ff:ff:ff:ff:ffinet 192.168.14.133/24 brd 192.168.14.255 scope global dynamic eth0valid_lft 5356021sec preferred_lft 5356021secinet6 fe80::250:56ff:fe33:13b6/64 scope link valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default link/ether 02:42:41:e8:f5:22 brd ff:ff:ff:ff:ff:ffinet 10.2.100.1/24 scope global docker0valid_lft forever preferred_lft foreverinet6 fe80::42:41ff:fee8:f522/64 scope link valid_lft forever preferred_lft forever
4: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default link/ether ae:4a:e1:f9:52:ea brd ff:ff:ff:ff:ff:ffinet 10.2.100.0/32 scope global flannel.1valid_lft forever preferred_lft foreverinet6 fe80::ac4a:e1ff:fef9:52ea/64 scope link valid_lft forever preferred_lft forever
244: veth007dbe6@if243: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master docker0 state UP group default link/ether f2:02:e1:a2:9f:8a brd ff:ff:ff:ff:ff:ff link-netnsid 0inet6 fe80::f002:e1ff:fea2:9f8a/64 scope link valid_lft forever preferred_lft forever
NodePort-svc级别,由kube-proxy操控,所有节点规则统一,逻辑上市全局的
因此,svc上的nodeport会监听在所有的节点上(如果不指定,即是随机端口,由apiserver指定--service-node-port-range '30000-32767'),即使有1个pod,任意访问某台的nodeport都可以访问到这个服务
$ cat nginx-deployment.yaml
apiVersion: apps/v1beta1 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:name: mynginxlabels:app: nginx
spec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginxports:- containerPort: 80$ cat nginx-svc.yaml
kind: Service
apiVersion: v1
metadata:name: mynginx
spec:type: NodePortselector:app: nginxports:- protocol: TCPport: 8080targetPort: 80$ kubect get pod --show-lables -o wide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE LABELS
default mynginx-31893996-f8bn7 1/1 Running 0 12m 10.2.100.2 n2.ma.com app=nginx,pod-template-hash=31893996$ kubectl get svc --show-lables -o wide
NAMESPACE NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
default mynginx 10.254.173.173 <nodes> 8080:31277/TCP 9m app=nginx
externalIPs 通过svc创建,在指定的node上监听端口
适用场景: 想通过svc来负载,但要求某台指定的node上监听,而非像nodeport所有节点监听.
[root@n1 external-ip]# cat nginx-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:name: nginx-deploymentlabels:app: nginx
spec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginxports:- containerPort: 80[root@n1 external-ip]# cat nginx-svc.yaml
apiVersion: v1
kind: Service
metadata:name: svc-nginx
spec:selector:app: nginxports:- protocol: TCPport: 80externalIPs: - 192.168.2.12 #这是我的一台node的ip- 这个端口是kube-proxy来启动的,所以只有运行kube-proxy的
[root@n2 ~]# netstat -ntulp
tcp 0 0 192.168.2.12:80 0.0.0.0:* LISTEN 11465/kube-proxy
转载于:https://www.cnblogs.com/iiiiher/p/8051947.html
[k8s]k8s pod的4种网络模式最佳实战(externalIPs )相关推荐
- php pod模式,k8s pod的4种网络模式最佳实战(externalIPs )
hostPort相当于docker run -p 8081:8080,不用创建svc,因此端口只在容器运行的vm上监听 缺点: 没法多pod负载 $ cat pod-hostport.yaml api ...
- 应用在k8s上运行的几种网络模式
k8s deployment service默认配置 应用部署在k8s上,首先想到的是应用k8s的默认service模式配置. 应用通过service向集群内部(ClusterIP)和集群外部(Nod ...
- calico的两种网络模式BGP和IP-IP性能分析
目前使用较多的网络插件有 flannel,calico,canel等,但是如果对比以上几种网络插件的性能,还是calico最受欢迎 一.calico概述 二.性能评测指标 三.物理机性能评测 四.物理 ...
- Docker的四种网络模式和相关网络命令等操作
Docker网络模式 一.实现原理 二.Docker四种网络模式 三.Docker命令 1.查看网络列表 2.自定义网络固定IP 3.暴露端口 4.在宿主机环境执行容器内命令 5.怎么把宿主机的文件传 ...
- Dockerfile精编细作(六)四种网络模式bridge、host、container、none
查看网卡信息 查看ip信息:centos7:ip add或ip addr lo:localhost网卡 ens33:对外网卡以太网,本机ip docker0:docker容器和宿主机通信的网卡,Doc ...
- 【Docker】容器的几种网络模式
当你使用Docker时,你会发现需要了解很多关于网络的知识.Docker作为目前最火的轻量级容器引擎,因此,我们有必要深入了解Docker的网络知识,以满足更高的网络需求.本文介绍了Docker的4种 ...
- VMware虚拟机三种网络模式(桥接、NAT、仅主机)的区别
由于Linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费.那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有vmware workstations ...
- VMware三种网络模式根本区别
提到VMware大家就想起了虚拟机技术,虚拟机技术在最近的几年中得到了广泛的发展,一些大型网络服务商都开始采用虚拟机技术,不仅节省了投资成本,更节约了能源的消耗. 我们知道VMware也分几种版本,普 ...
- VMware三种网络模式根本区别(图)
提到VMware大家就想起了虚拟机技术,虚拟机技术在最近的几年中得到了广泛的发展,一些大型网络服务商都开始采用虚拟机技术,不仅节省了投资成本,更节约了能源的消耗. 我们知道VMware也分几种版本,普 ...
最新文章
- 3.Ubuntu18.04取消警告音
- TreaponseHeader
- (0021)iOS 开发之-苹果官方文档
- Python进程学习笔记-进程创建fork
- c语言用if如何删除末尾空格,新人提问:如何将输出时每行最后一个空格删除
- Oracle常用存储过程写法
- 阶段5 3.微服务项目【学成在线】_day04 页面静态化_07-freemarker基础-if指令
- Julia: 关于SubString
- 2021年山东大学考研数字电路906真题
- 儒豹公布09年7月手机搜索热门关键词排行榜
- python爬取链家_Python爬取链家北京二手房数据
- 钉钉isv接入三方应用授权鉴权流程
- win10无法打开设置,桌面右键显示设置提示ms-settings:display 该文件没有与之关联的程序来执行该操作
- 量化交易 米筐 策略评价指标
- LSD-SLAM运行过程及报错 “what(): Duration is out of dual 32-bit range“
- 工作能力特长归纳总结
- bcm5396交换机级联配置_工业以太网交换机的专业术语汇总
- 外企office电话英语
- 营销玩法|世界杯期间产品如何提高互动性?
- NR/5G - Measurement, GAP, SFTD
热门文章
- 世界公认最好的记忆方法_世界记忆大师:6种简单实用记忆方法,让孩子成为学霸中学霸...
- php的$_SERVER['HOSTNAME']
- 多人合作开发的标准制定
- 【深度学习】with torch.no_grad的作用
- 【浙大软件学院机试】深度优先搜索、并查集和优先级队列知识点(Python实现)
- 【Web安全】DVWA+CSRF跨站请求伪造-生成链接修改password
- U-net进行图像分割
- mysql锁与程序锁_数据库加锁(转)
- html 宽度和高度,如何检索HTML元素的实际宽度和高度?
- feign 回退原因_0503-Hystrix保护应用-feign的hystrix支持