日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Pod 实现机制

發(fā)布時間:2023/10/11 综合教程 70 老码农
生活随笔 收集整理的這篇文章主要介紹了 Pod 实现机制 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Pod 為了親密性應用而存在:

  • 兩個應用需要通過 127.0.0.1 或者 Socket 通信;
  • 兩個應用之間發(fā)生文件交互;
  • 兩個應用發(fā)生頻繁的調用

共享網絡

Pod 中的所有容器擁有同一個 IP 地址:

# 生成 Pod 的  YAML 文件
[root@k8s-master01 ~]# cat pod.yaml
apiVersion: v1
kind: Pod
metadata:
labels:
app: my-podz
name: my-podz
namespace: default
spec:
containers:
- name: nginx-demoz
image: nginx:1.8
- name: java-demoz
image: www.myharbor.com/wangqihan/java-demo:v1 # 創(chuàng)建 Pod
[root@k8s-master01 ~]# kubectl apply -f pod.yaml [root@k8s-master01 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
my-podz 2/2 Running 0 11s # 進入 java-demoz 查看 IP 地址
[root@k8s-master01 ~]# kubectl exec -it my-podz -c java-demoz bash
root@my-podz:/usr/local/tomcat# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
3: eth0@if22: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default
link/ether ce:67:02:aa:10:c2 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.244.1.15/24 brd 10.244.1.255 scope global eth0
valid_lft forever preferred_lft forever
root@my-podz:/usr/local/tomcat# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 14 01:31 ? 00:00:24 /usr/local/openjdk-8/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging
root 40 0 0 01:33 pts/0 00:00:00 bash
root 46 40 0 01:34 pts/0 00:00:00 ps -ef # 進入 nginx-demoz 查看 IP 地址
[root@k8s-master01 ~]# kubectl exec -it my-podz -c nginx-demoz bash
root@my-podz:/# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
3: eth0@if22: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default
link/ether ce:67:02:aa:10:c2 brd ff:ff:ff:ff:ff:ff
inet 10.244.1.15/24 brd 10.244.1.255 scope global eth0
valid_lft forever preferred_lft forever
root@my-podz:/# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 01:31 ? 00:00:00 nginx: master process nginx -g daemon off;
nginx 6 1 0 01:31 ? 00:00:00 nginx: worker process
root 7 0 0 01:34 pts/0 00:00:00 bash
root 13 7 0 01:34 pts/0 00:00:00 ps -ef

共享存儲

為了持久化保存容器的數據,可以使用 Kubernetes Volume

Volume 存儲卷 是 Pod 中能夠被多個容器訪問的共享目錄,Kubernetes 的 Volume 概念,用途和目的與 Docker 的 Volume 類似,但兩者不能等價:

  • 首先,Kubernetes 中的 Volume 定義在 Pod 上,被一個 Pod 里的多個容器掛在到具體的文件目錄下;
  • 其次,Kubernetes 中的 Volume 與 Pod 生命周期相同,但與 Docker 容器生命周期不相關,容器終止或者重啟時,Volume 中的數據也不會丟失;
  • 最后,Kubernetes 中的 Volume 支持多種 backend 類型,包括 emptyDir、hostPath、GCE Persistent Disk、AWS Elastic Block Store、NFS、Ceph 等。
[root@k8s-master01 ~]# vim mypodzz.yaml
apiVersion: v1
kind: Pod
metadata:
name: my-podzz
namespace: default
spec:
containers:
- name: producer
image: centos:7
command: ["bash","-c","for i in {1..100};do echo $i >> /producer_dir/hello;sleep 1;done"]
volumeMounts:
- name: shared-volume
mountPath: /producer_dir - name: consumer
image: centos:7
command: ["bash","-c","tail -f /consumer_dir/hello"]
volumeMounts:
- name: shared-volume
mountPath: /consumer_dir volumes:
- name: shared-volume
emptyDir: {} # 創(chuàng)建 Pod 資源
[root@k8s-master01 ~]# kubectl apply -f podzz.yaml # 檢查 Pod 資源狀態(tài)
[root@k8s-master01 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
my-podzz 2/2 Running 0 20s # 查看 comsumer 容器內掛載目錄
[root@k8s-master01 ~]# kubectl exec -it my-podzz -c consumer bash
[root@my-podzz /]# cat /consumer_dir/hello
1
2
3
... # 查看 producer 容器內掛載目錄
[root@k8s-master01 ~]# kubectl exec -it my-podzz -c producer bash
[root@my-podzz /]# cat /producer_dir/hello
1
2
3
...

# 查看 Pod 資源詳細信息,可以看到被分配到 k8s-node2 節(jié)點
[root@k8s-master01 ~]# kubectl describe pod my-podzz | tail -4
Name: my-podzz
Namespace: default
Priority: 0
Node: k8s-node2/172.16.1.54 # 到 Node 節(jié)點上觀察 Docker 容器
[root@k8s-node02 data]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
633ac7b61c12 7e6257c9f8d8 "bash -c 'for i in {…" About a minute ago Up About a minute k8s_producer_my-podzz_default_e1a6acc0-4903-4599-a922-4c1beb6a7b56_4
36f4c5957b51 7e6257c9f8d8 "bash -c 'tail -f /c…" 9 minutes ago Up 9 minutes k8s_consumer_my-podzz_default_e1a6acc0-4903-4599-a922-4c1beb6a7b56_0 # 觀察掛載目錄
[root@k8s-node02 data]# docker inspect 633ac7b61c12 | grep -i source
[root@k8s-node02 data]# docker inspect 36f4c5957b51 | grep -i source

參考:K8s Volume 存儲

總結

以上是生活随笔為你收集整理的Pod 实现机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。