k8s_单个pod中多个容器的通信实验(基础)的零散笔记
2020-06-08 04:22
901 查看
结论:一个pod中的不同容器共享pod的网络名称空间。
测试用yaml文件
apiVersion: v1 kind: Pod metadata: name: pod-demo namespace: default spec: containers: - name: myapp image: ikubernetes/myapp:v1 imagePullPolicy: IfNotPresent - name: bbox image: busybox:latest imagePullPolicy: IfNotPresent command: - /bin/sh - -c - "sleep 86400"
共有两个容器,一个为nginx,另一个为busybox
- 进入bbox容器,用到的命令与docker中的类似
kubectl exec pod-demo bbox -it -- /bin/sh #-it 在前台运行终端 ; --后面需要有空格 #docker命令 docker exec web -it /bin/bash
- 查看bbox的状态
/ # ps aux PID USER TIME COMMAND 1 root 0:00 nginx: master process nginx -g daemon off; 6 nginx 0:00 nginx: worker process 17 root 0:00 /bin/sh 22 root 0:00 ps aux / # netstat -tnl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN / # wget -O - -q 127.0.0.1 Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
bbox中并未安装对外的服务,但在查看网络状态时,可以发现80口被监听。因为bbox和myapp共用一个网络名称空间。
突发奇想的测试
结论:别光想结果会怎样,先考虑总体架构,再决定怎么写配置。
b站上看到一条弹幕说一个pod加2个ngx, 显示的内容不一样,最后去访问结果会怎样。其实我第一反应就是端口冲突。可还是想看看具体现象。
测试配置:
apiVersion: v1 kind: Pod metadata: name: pod-demo namespace: default spec: containers: - name: ngx #ngx默认配置,端口80 image: nginx:latest imagePullPolicy: IfNotPresent - name: myapp # 端口也是80 image: ikubernetes/myapp:v1 imagePullPolicy: IfNotPresent - name: bbox #乱入的bbox,可以忽略 image: busybox:latest imagePullPolicy: IfNotPresent command: - /bin/sh - -c - "sleep 86400"
使用apply以后查看pod状态,此处看到一个 CrashLoopBackOff状态。 且3个容器有1个未在运行。
[root@test basic]# kubectl get pods NAME READY STATUS RESTARTS AGE pod-demo 2/3 CrashLoopBackOff 4 2m3s
看看log,典型的端口冲突提示。
[root@test basic]# kubectl logs pods/pod-demo ngx 2020/05/05 15:36:42 [emerg] 1#1: bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 2020/05/05 15:36:42 [emerg] 1#1: bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
相关文章推荐
- k8s_replicaSet基础的零散笔记
- k8s_SecurityContext(基础)的零散笔记
- k8s_livenessProbe & readinessProbe(基础)的零散笔记
- k8s_label &annotation(基础)的零散笔记
- 基础笔记8(二)(容器-引用类型的排序)
- 20145337 《信息安全系统设计基础》实验五 网络通信
- 20145305 《信息安全系统设计基础》实验五 网络通信
- 容器学习笔记之将Google的gcr.io、k8s.gcr.io 换为国内镜像
- Linux进程间通信(五)---信号通信之signal()、信号集函数组及其基础实验
- cortex_m3_stm32嵌入式学习笔记(二十一):SPI实验(通信总线)
- Java视频学习笔记:基础(四)之对象容器
- 20155322 2017-2018-1《信息安全系统设计基础》实验五-通信协议设计
- Linux进程间通信(二)---管道通信之无名管道及其基础实验
- 51单片机学习笔记【九】——红外通信实验
- Linux进程间通信(六)---信号量通信之semget()、semctl()、semop()及其基础实验
- 基于数学建模的数学实验学习笔记一 MATLAB软件基础
- ubuntu16.04下ROS操作系统学习笔记(三 / 二)ROS基础-ROS通信编程
- Docker网络基础---Docker跨主机容器访问通信
- 【DM642学习笔记二】dsp基础实验:发光二级管的显示 led.c
- 20145215&20145307《信息安全系统设计基础》实验五 网络通信