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 )相关推荐

  1. php pod模式,k8s pod的4种网络模式最佳实战(externalIPs )

    hostPort相当于docker run -p 8081:8080,不用创建svc,因此端口只在容器运行的vm上监听 缺点: 没法多pod负载 $ cat pod-hostport.yaml api ...

  2. 应用在k8s上运行的几种网络模式

    k8s deployment service默认配置 应用部署在k8s上,首先想到的是应用k8s的默认service模式配置. 应用通过service向集群内部(ClusterIP)和集群外部(Nod ...

  3. calico的两种网络模式BGP和IP-IP性能分析

    目前使用较多的网络插件有 flannel,calico,canel等,但是如果对比以上几种网络插件的性能,还是calico最受欢迎 一.calico概述 二.性能评测指标 三.物理机性能评测 四.物理 ...

  4. Docker的四种网络模式和相关网络命令等操作

    Docker网络模式 一.实现原理 二.Docker四种网络模式 三.Docker命令 1.查看网络列表 2.自定义网络固定IP 3.暴露端口 4.在宿主机环境执行容器内命令 5.怎么把宿主机的文件传 ...

  5. Dockerfile精编细作(六)四种网络模式bridge、host、container、none

    查看网卡信息 查看ip信息:centos7:ip add或ip addr lo:localhost网卡 ens33:对外网卡以太网,本机ip docker0:docker容器和宿主机通信的网卡,Doc ...

  6. 【Docker】容器的几种网络模式

    当你使用Docker时,你会发现需要了解很多关于网络的知识.Docker作为目前最火的轻量级容器引擎,因此,我们有必要深入了解Docker的网络知识,以满足更高的网络需求.本文介绍了Docker的4种 ...

  7. VMware虚拟机三种网络模式(桥接、NAT、仅主机)的区别

    由于Linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费.那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有vmware workstations ...

  8. VMware三种网络模式根本区别

    提到VMware大家就想起了虚拟机技术,虚拟机技术在最近的几年中得到了广泛的发展,一些大型网络服务商都开始采用虚拟机技术,不仅节省了投资成本,更节约了能源的消耗. 我们知道VMware也分几种版本,普 ...

  9. VMware三种网络模式根本区别(图)

    提到VMware大家就想起了虚拟机技术,虚拟机技术在最近的几年中得到了广泛的发展,一些大型网络服务商都开始采用虚拟机技术,不仅节省了投资成本,更节约了能源的消耗. 我们知道VMware也分几种版本,普 ...

最新文章

  1. 3.Ubuntu18.04取消警告音
  2. TreaponseHeader
  3. (0021)iOS 开发之-苹果官方文档
  4. Python进程学习笔记-进程创建fork
  5. c语言用if如何删除末尾空格,新人提问:如何将输出时每行最后一个空格删除
  6. Oracle常用存储过程写法
  7. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_07-freemarker基础-if指令
  8. Julia: 关于SubString
  9. 2021年山东大学考研数字电路906真题
  10. 儒豹公布09年7月手机搜索热门关键词排行榜
  11. python爬取链家_Python爬取链家北京二手房数据
  12. 钉钉isv接入三方应用授权鉴权流程
  13. win10无法打开设置,桌面右键显示设置提示ms-settings:display 该文件没有与之关联的程序来执行该操作
  14. 量化交易 米筐 策略评价指标
  15. LSD-SLAM运行过程及报错 “what(): Duration is out of dual 32-bit range“
  16. 工作能力特长归纳总结
  17. bcm5396交换机级联配置_工业以太网交换机的专业术语汇总
  18. 外企office电话英语
  19. 营销玩法|世界杯期间产品如何提高互动性?
  20. NR/5G - Measurement, GAP, SFTD

热门文章

  1. 世界公认最好的记忆方法_世界记忆大师:6种简单实用记忆方法,让孩子成为学霸中学霸...
  2. php的$_SERVER['HOSTNAME']
  3. 多人合作开发的标准制定
  4. 【深度学习】with torch.no_grad的作用
  5. 【浙大软件学院机试】深度优先搜索、并查集和优先级队列知识点(Python实现)
  6. 【Web安全】DVWA+CSRF跨站请求伪造-生成链接修改password
  7. U-net进行图像分割
  8. mysql锁与程序锁_数据库加锁(转)
  9. html 宽度和高度,如何检索HTML元素的实际宽度和高度?
  10. feign 回退原因_0503-Hystrix保护应用-feign的hystrix支持