k8s部署-40-对POD进行重新认识(上)

对POD进行深度认识,让我们再次进入pod的世界。

图片

1

POD回顾

一直使用的pod,我们再继续了解下,首先回顾下之前我们知道的。

1、POD是最小调度单位
2、POD本质上还是容器的隔离
3、Pause容器

2

POD之Volume

我们看下pod的文件是如何共享的。

[root@node1 ~]# cd namespace/
[root@node1 namespace]# mkdir pod
[root@node1 namespace]# cd pod
[root@node1 pod]#
[root@node1 pod]# vim pod-volume.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-volume
spec:
  containers:
  - name: web
    image: registry.cn-beijing.aliyuncs.com/yunweijia0909/springboot-web:v1
    ports:
    - containerPort: 8080
    volumeMounts:
    - name: shared-volume
      mountPath: /shared-web
  - name: redis
    env:
    - name: REDIS_PORT
      value: "6379"
    image: redis
    volumeMounts:
    - name: shared-volume
      mountPath: /shared-redis
  volumes:
  - name: shared-volume
    hostPath:
      path: /shared-volume-data
[root@node1 pod]# kubectl apply -f pod-volume.yaml -n dev
pod/pod-volume created
[root@node1 pod]#

然后我们查看下pod的运行情况;

[root@node1 pod]# kubectl get pod -n dev -o wide
NAME         READY   STATUS    RESTARTS   AGE   IP              NODE    NOMINATED NODE   READINESS GATES
pod-volume   2/2     Running   0          17s   10.200.104.36   node2   <none>           <none>
[root@node1 pod]#

可以看到运行在node2上,那么我们登录到node2上进行操作;

[root@node2 ~]# crictl ps
CONTAINER           IMAGE               CREATED             STATE               NAME                       ATTEMPT             POD ID
5ef0dd5143665       bba24acba395b       24 seconds ago      Running             redis                      0                   a9c6a4f87ffde
0123cd4068b28       8ad32427177e4       28 seconds ago      Running             web                        0                   a9c6a4f87ffde
8eb0924940884       f2f70adc5d89a       About an hour ago   Running             my-nginx                   34                  a696725bc8d76
be92ec599aca8       67da37a9a360e       About an hour ago   Running             coredns                    33                  0ea47c03f8a05
1b44a197f9c4e       7a71aca7b60fc       About an hour ago   Running             calico-node                33                  d4b02f3244df6
c7cf66853091b       90f9d984ec9a3       About an hour ago   Running             node-cache                 33                  a461065aec716
cfa1c7594c33b       acac7d63e4060       About an hour ago   Running             nginx-ingress-controller   4                   a3cdef0be2594
[root@node2 ~]# 

我们先登录进redis容器中创建待验证文件;

[root@node2 ~]# crictl exec -it 5ef0dd5143665 /bin/bash
root@pod-volume:/data# cd /
root@pod-volume:/# ls
bin  boot  data  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  shared-redis  srv  sys  tmp  usr  var
root@pod-volume:/# cd shared-redis/
root@pod-volume:/shared-redis# ls
root@pod-volume:/shared-redis# echo "redis" > yunweijia.txt
root@pod-volume:/shared-redis# cat yunweijia.txt 
redis
root@pod-volume:/shared-redis# exit
exit
[root@node2 ~]# 

然后我们再登录进web容器中看下是否有该文件和对应内容;

[root@node2 ~]# crictl exec -it 0123cd4068b28 /bin/bash
root@pod-volume:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  shared-web  springboot-web-demo.jar  srv  sys  tmp  usr  var
root@pod-volume:/# cd shared-web/
root@pod-volume:/shared-web# ls
yunweijia.txt
root@pod-volume:/shared-web# cat yunweijia.txt 
redis
root@pod-volume:/shared-web# exit
exit
[root@node2 ~]#

我们可以发现,在redis上创建的文件,web容器中的确是存在的,并且对应node2节点上呢?那必然也是存在的,看看;

[root@node2 ~]# cat /shared-volume-data/yunweijia.txt 
redis
[root@node2 ~]#

3

POD的Hosts文件

在volume的基础上,我们来看看一个pod中运行多个容器的时候,它们的hosts文件是怎样的吧。

首先我们看下redis的hosts文件吧;

[root@node2 ~]# crictl exec -it 5ef0dd5143665 cat /etc/hosts
# Kubernetes-managed hosts file.
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
fe00::0 ip6-mcastprefix
fe00::1 ip6-allnodes
fe00::2 ip6-allrouters
10.200.104.36   pod-volume
[root@node2 ~]#

其次,我们再看下web的hosts文件;

[root@node2 ~]# crictl exec -it 0123cd4068b28 cat /etc/hosts
# Kubernetes-managed hosts file.
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
fe00::0 ip6-mcastprefix
fe00::1 ip6-allnodes
fe00::2 ip6-allrouters
10.200.104.36   pod-volume
[root@node2 ~]#

可以看到同一个pod中不同容器的hosts文件是一致的,且是同一个IP地址,那么就能看出来,在同一个pod中,不同容器的端口号必须保持不同,否则会造成端口号冲突,从而无法正常启动该容器。

那么又有一个问题了,这种情况下我们如何配置他的host主机名呢?是应该配置在哪个容器下面呢?

# 先删除pod
[root@node1 pod]# kubectl delete -f pod-volume.yaml -n dev
pod "pod-volume" deleted
[root@node1 pod]# 

修改yaml文件文件;

[root@node1 pod]# vim pod-volume.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-volume
spec:
  hostAliases:
  - ip: "192.168.112.131"
    hostnames:
    - "ceshi.volume.com"  
  containers:
  - name: web
    image: registry.cn-beijing.aliyuncs.com/yunweijia0909/springboot-web:v1
    ports:
    - containerPort: 8080
    volumeMounts:
    - name: shared-volume
      mountPath: /shared-web
  - name: redis
    env:
    - name: REDIS_PORT
      value: "
6379
"
    image: redis
    volumeMounts:
    - name: shared-volume
      mountPath: /shared-redis
  volumes:
  - name: shared-volume
    hostPath:
      path: /shared-volume-data
[root@node1 pod]#

使其生效;

[root@node1 pod]# kubectl apply -f pod-volume.yaml -n dev
pod/pod-volume created
[root@node1 pod]# kubectl get pod -n dev -o wide
NAME         READY   STATUS    RESTARTS   AGE   IP              NODE    NOMINATED NODE   READINESS GATES
pod-volume   2/2     Running   0          3m    10.200.104.54   node2   <none>           <none>
[root@node1 pod]#

查看redis的hosts文件;

[root@node2 ~]# crictl exec -it de4805fe7b87c cat /etc/hosts
# Kubernetes-managed hosts file.
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
fe00::0 ip6-mcastprefix
fe00::1 ip6-allnodes
fe00::2 ip6-allrouters
10.200.104.54   pod-volume

# Entries added by HostAliases.
192.168.112.131 ceshi.volume.com
[root@node2 ~]#

查看web的hosts文件;

[root@node2 ~]# crictl exec -it ffe81fd533bcd cat /etc/hosts
# Kubernetes-managed hosts file.
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
fe00::0 ip6-mcastprefix
fe00::1 ip6-allnodes
fe00::2 ip6-allrouters
10.200.104.54   pod-volume

# Entries added by HostAliases.
192.168.112.131 ceshi.volume.com
[root@node2 ~]#

可以看到redis和web的hosts文件都添加成功了。

4

POD和宿主机共享

那么pod还可以和宿主机共享网络和pid空间,下面看看;

先停止原pod;
剩余内容请转至VX公众号 “运维家” ,回复 “147” 查看。
------ 以下内容为防伪内容,忽略即可 ------
------ 以下内容为防伪内容,忽略即可 ------
------ 以下内容为防伪内容,忽略即可 ------

linux切换shell手机linux模拟器linux下的中断使用linux内核模块Linux下c语言多线程开发linux输入法安装不了怎样在linux中下载安 装包mac装成Linuxlinux显示没有rz技嘉安装linuxregallinuxLInux怎么一个文件夹复制linux过滤的非linux内核版本号组成部分stm32装linuxlinux导入视频linux向用户发送消息linux下sim800驱动linux查看mq版本信息Linux樱花映射

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值