美文网首页linux运维
k8s部署-40-对POD进行重新认识(上)

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

作者: 运维家 | 来源:发表于2022-04-27 22:10 被阅读0次

 对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: v1kind: Podmetadata:  name: pod-volumespec:  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 devpod/pod-volume created[root@node1 pod]#
然后我们查看下pod的运行情况;
[root@node1 pod]# kubectl get pod -n dev -o wideNAME         READY   STATUS    RESTARTS   AGE   IP              NODE    NOMINATED NODE   READINESS GATESpod-volume   2/2     Running   0          17s   10.200.104.36   node2   <none>           <none>[root@node1 pod]#
可以看到运行在node2上,那么我们登录到node2上进行操作;
[root@node2 ~]# crictl psCONTAINER           IMAGE               CREATED             STATE               NAME                       ATTEMPT             POD ID5ef0dd5143665       bba24acba395b       24 seconds ago      Running             redis                      0                   a9c6a4f87ffde0123cd4068b28       8ad32427177e4       28 seconds ago      Running             web                        0                   a9c6a4f87ffde8eb0924940884       f2f70adc5d89a       About an hour ago   Running             my-nginx                   34                  a696725bc8d76be92ec599aca8       67da37a9a360e       About an hour ago   Running             coredns                    33                  0ea47c03f8a051b44a197f9c4e       7a71aca7b60fc       About an hour ago   Running             calico-node                33                  d4b02f3244df6c7cf66853091b       90f9d984ec9a3       About an hour ago   Running             node-cache                 33                  a461065aec716cfa1c7594c33b       acac7d63e4060       About an hour ago   Running             nginx-ingress-controller   4                   a3cdef0be2594[root@node2 ~]# 
我们先登录进redis容器中创建待验证文件;
[root@node2 ~]# crictl exec -it 5ef0dd5143665 /bin/bashroot@pod-volume:/data# cd /root@pod-volume:/# lsbin  boot  data  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  shared-redis  srv  sys  tmp  usr  varroot@pod-volume:/# cd shared-redis/root@pod-volume:/shared-redis# lsroot@pod-volume:/shared-redis# echo "redis" > yunweijia.txtroot@pod-volume:/shared-redis# cat yunweijia.txt redisroot@pod-volume:/shared-redis# exitexit[root@node2 ~]# 
然后我们再登录进web容器中看下是否有该文件和对应内容;
[root@node2 ~]# crictl exec -it 0123cd4068b28 /bin/bashroot@pod-volume:/# lsbin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  shared-web  springboot-web-demo.jar  srv  sys  tmp  usr  varroot@pod-volume:/# cd shared-web/root@pod-volume:/shared-web# lsyunweijia.txtroot@pod-volume:/shared-web# cat yunweijia.txt redisroot@pod-volume:/shared-web# exitexit[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-loopbackfe00::0 ip6-localnetfe00::0 ip6-mcastprefixfe00::1 ip6-allnodesfe00::2 ip6-allrouters10.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-loopbackfe00::0 ip6-localnetfe00::0 ip6-mcastprefixfe00::1 ip6-allnodesfe00::2 ip6-allrouters10.200.104.36   pod-volume[root@node2 ~]#

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

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

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

修改yaml文件文件;

[root@node1 pod]# vim pod-volume.yaml apiVersion: v1kind: Podmetadata:  name: pod-volumespec:  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 devpod/pod-volume created[root@node1 pod]# kubectl get pod -n dev -o wideNAME         READY   STATUS    RESTARTS   AGE   IP              NODE    NOMINATED NODE   READINESS GATESpod-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-loopbackfe00::0 ip6-localnetfe00::0 ip6-mcastprefixfe00::1 ip6-allnodesfe00::2 ip6-allrouters10.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-loopbackfe00::0 ip6-localnetfe00::0 ip6-mcastprefixfe00::1 ip6-allnodesfe00::2 ip6-allrouters10.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樱花映射

相关文章

网友评论

    本文标题:k8s部署-40-对POD进行重新认识(上)

    本文链接:https://www.haomeiwen.com/subject/cchjyrtx.html