一、网络共享
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名称>