kubernetes基础学习(五)pod内部详细解析

一、网络共享

 1、pod内部启动两个容器(containers)

vim pod-net-test.yaml

apiVersion: v1
kind: Pod        #资源类型
metadata:        #元数据
  labels:        #pod标签
    app: test    #标签内容
  name: pod-net-test   #pod名称
  namespace: default   #pod名称空间
spec:            #期望
  containers:    #容器
  - image: busybox     #容器镜像1
    name: test         #容器镜像1名称
    command: ["/bin/sh","-c","sleep 12h"]
  - image: nginx       #容器镜像2
    name: web          #容器镜像2名称

2、查看标签,ready为2是两个容器

[root@k8s-master ~]# kubectl apply -f pod-net-test.yaml
[root@k8s-master ~]# kubectl get pod --show-labels
NAME           READY   STATUS    RESTARTS   AGE   LABELS
pod-net-test   2/2     Running   0          28m   app=test

3、到从节点可以看到

[root@k8s-node2 ~]# docker ps -a | grep pod-net
0c6b7dc3559c   nginx                                               "/docker-entrypoint.…"   33 minutes ago   Up 33 minutes                                    k8s_web_pod-net-test_default_46d5ec3f-aa97-4335-9d7a-c9c9f6a257a4_0
06494c51efbd   busybox                                             "/bin/sh -c 'sleep 1…"   34 minutes ago   Up 34 minutes                                    k8s_test_pod-net-test_default_46d5ec3f-aa97-4335-9d7a-c9c9f6a257a4_0
6b0eda171ae3   registry.aliyuncs.com/google_containers/pause:3.2   "/pause"                 34 minutes ago   Up 34 minutes                                    k8s_POD_pod-net-test_default_46d5ec3f-aa97-4335-9d7a-c9c9f6a257a4_0

里面有三个容器,前两个是通过镜像启动的容器nginx和busybox,最后一个是负责docker网络的容器,保证容器互相访问,会在创建容器前创建

4、进入容器内部

 kubectl exec -it  pod-net-test -c test /bin/sh

其中-c指定的是容器的名称,/bin/sh报错的话可以使用/bin/bash

5、busybox访问nginx,可以看到nginx的80端口,并且可以访问到nginx页面

/ # netstat -anpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -
tcp        0      0 :::80  


/ # wget 127.0.0.1:80
Connecting to 127.0.0.1:80 (127.0.0.1:80)
saving to 'index.html'
index.html           100% |*******************************************************|   615  0:00:00 ETA
'index.html' saved
/ # cat index.html 
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>

6、

二、数据共享

pod内部启两个容器

vim pod-volume-test.yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    app: test
  name: pod-volume-test
  namespace: default
spec:
  containers:
#容器1
  - image: busybox
    name: test
    command: ["/bin/sh","-c","sleep 12h"]
    volumeMounts: # 数据卷挂载
    - name: log # 指定挂载的数据卷名称
      mountPath: /data # 数据卷挂载到容器中的路径
#容器2
  - image: nginx
    name: web
    volumeMounts:
    - name: log
      mountPath: /usr/share/nginx/html
#定义共享存储,会将容器1和2的数据写入共享存储
  volumes: # 定义数据卷
  - name: log # 数据卷名称
    emptyDir: {} # 数据卷类型

查看

​
[root@k8s-master ~]# kubectl apply -f pod-volume-test.yaml
[root@k8s-master ~]# kubectl get pod --show-labels
NAME           READY   STATUS    RESTARTS   AGE   LABELS
pod-volume-test   2/2     Running   0          28m   app=test

 可以看到,在test中创建的文件在web中也能看到

以上仅为拆分查看,实际工作中pod为控制器控制

以上用到的命令

创建Pod:
kubectl apply -f pod.yaml
或者使用命令:kubectl run nginx --image=nginx
查看Pod:
kubectl get pods
kubectl describe pod <Pod名称>
查看日志:
kubectl logs <Pod名称> [-c CONTAINER]
kubectl logs <Pod名称> [-c CONTAINER] -f
进入容器终端:
kubectl exec <Pod名称> [-c CONTAINER] -- bash
删除Pod:
kubectl delete pod <Pod名称>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值