做购物网站的公司,建设银行泰安培训中心官方网站,cos wordpress,庆阳网站建设公司目录
一、Pod介绍
二、指令创建和管理Pod
三、资源清单创建pod
1.挂载hostPath存储卷
2.NFS存储卷
所有节点安装nfs
k8s3编辑NFS配置文件
k8s1#xff0c;k8s2节点开机挂载
编辑pod资源清单#xff0c;挂载nfs
四、pod网络暴露
1.hostNetwork使用宿主机的网络
2.…目录
一、Pod介绍
二、指令创建和管理Pod
三、资源清单创建pod
1.挂载hostPath存储卷
2.NFS存储卷
所有节点安装nfs
k8s3编辑NFS配置文件
k8s1k8s2节点开机挂载
编辑pod资源清单挂载nfs
四、pod网络暴露
1.hostNetwork使用宿主机的网络
2.宿主机端口映射
五、pod中容器的环境变量env 一、Pod介绍
Pod 是包含一个或多个容器的容器组是 Kubernetes 中创建和管理的最小对象。
Pod 有以下特点
Pod是kubernetes中最小的调度单位原子单元Kubernetes直接管理Pod而不是容器。其他所有资源都是围绕着为pod资源提供服务的给pod提供服务的。同一个Pod中的容器总是会被自动安排到集群中的同一节点物理机或虚拟机上并且一起调度。Pod可以理解为运行特定应用的“逻辑主机”这些容器共享存储、网络和配置声明(如资源限制)。每个 Pod 有唯一的 IP 地址。 IP地址分配给Pod在同一个 Pod 内所有容器共享一个 IP 地址和端口空间Pod 内的容器可以使用localhost互相通信。 例如你可能有一个容器为共享卷中的文件提供 Web 服务器支持以及一个单独的 边车 (sidercar) 容器负责从远端更新这些文件如下图所示 二、指令创建和管理Pod # 创建pod [rootk8s1 pod]# kubectl run mynginx --imagenginx:1.16.1-alpine # 查看pod的IP和运行节点信息 [rootk8s1 pod]# kubectl get pod --watch -owide # 描述可以用来排查问题 [rootk8s1 pod]# kubectl get pod --watch -owide # 查看pod的运行日志 [rootk8s1 pod]# kubectl logs mynginx # 使用Pod的ippod里面运行容器的端口 [rootk8s1 pod]# curl 10.100.1.4 # 在容器中执行命令 [rootk8s1 pod]# kubectl exec mynginx -it -- /bin/sh # -it 交互模式 # --rm 退出后删除容器多用于执行一次性任务或使用客户端 [rootk8s1 pod]# kubectl run mynginx --imagenginx:1.16.1-alpine -it --rm -- /bin/sh # 删除 [rootk8s1 pod]# kubectl delete pod mynginx # 强制删除 [rootk8s1 pod]# kubectl delete pod mynginx --force 三、资源清单创建pod
1.挂载hostPath存储卷
将物理机节点中的目录挂载到pod中pod意外宕机或者被删除数据不丢失同一个pod中不同的容器之间数据共享同一个worker节点不同的pod之间的数据共享在不同worker节点的pod无法数据共享 # 编写资源清单 [rootk8s1 pod]# vi pod-hostpath.yaml apiVersion: v1
kind: Pod
metadata:name: mypod
spec:#指定pod创建在哪个worker节点中nodeName: k8s1volumes:- name: hp-01#声明存储卷类型是hostPath物理机节点目录挂载hostPath: #指定hostPath的路径物理机挂载路径path: /data/pod-volumescontainers:- name: c1image: nginx:1.16.1-alpinevolumeMounts:- name: hp-01mountPath: /usr/share/nginx/html/ # 创建pod资源 [rootk8s1 pod]# kubectl apply -f pod-hostpath.yaml [rootk8s2 pod-volumes]# mkdir -p /data/pod-volumes [rootk8s2 pod-volumes]# echo oslee /data/pod-volumes/index.html # 访问nginx [rootk8s1 pod]# kubectl get pod -owide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES mypod 1/1 Running 0 33s 10.100.0.2 k8s1 none none [rootk8s1 pod]# curl 10.100.0.2 oslee 2.NFS存储卷 所有节点安装nfs # 安装nfs yum -y install nfs-utils # 创建共享目录 mkdir -p /data/nfs_data k8s3编辑NFS配置文件 # 配置nfs [rootk8s3 data]# vim /etc/exports /data/nfs_data/ 10.128.0.0/16(rw,no_root_squash,no_all_squash,sync) # 启动并开机自启 [rootk8s3 data]# systemctl enable --now nfs # 命令使配置立即生效 [rootk8s3 data]# exportfs -r # 查看nfs共享目录是否存在 [rootk8s3 data]# exportfs /data/nfs_data 10.128.0.0/16 [rootk8s3 data]# k8s1k8s2节点开机挂载 # 挂载共享目录 mount -t nfs 10.128.175.196:/data/nfs_data/ /data/nfs_data/ -o nolock,nfsvers3,vers3 # 开机自动挂载 vim /etc/rc.d/rc.local mount -t nfs 10.128.175.196:/data/nfs_data/ /data/nfs_data/ -o nolock,nfsvers3,vers3 编辑pod资源清单挂载nfs [rootk8s1 pod]# vi pod-nfs.yaml apiVersion: v1
kind: Pod
metadata:name: volumes-nfs01
spec:nodeName: k8s1volumes:- name: nfs-data# 指定存储卷的类型是nfsnfs:#指定nfs在哪个节点server: k8s3# 指定nfs挂在路径path: /data/nfs_data/nginxcontainers:- name: c1image: nginx:1.16.1-alpinevolumeMounts:- name: nfs-datamountPath: /usr/share/nginx/html---apiVersion: v1
kind: Pod
metadata:name: volumes-nfs02
spec:nodeName: k8s2volumes:- name: nfs-data# 指定存储卷的类型是nfsnfs:#指定nfs在哪个节点server: k8s3# 指定nfs挂在路径path: /data/nfs_data/nginxcontainers:- name: c1image: nginx:1.16.1-alpinevolumeMounts:- name: nfs-datamountPath: /usr/share/nginx/html # 创建pod资源 [rootk8s1 pod]# kubectl apply -f pod-nfs.yaml pod/volumes-nfs created # 访问nginx [rootk8s1 pod]# echo oslee /data/nfs_data/nginx/index.html [rootk8s1 pod]# curl 10.100.1.8 oslee [rootk8s1 pod]# 四、pod网络暴露
1.hostNetwork使用宿主机的网络 # 编辑pod资源清单 [rootk8s1 pod]# vi pod-hnw.yaml apiVersion: v1
kind: Pod
metadata:name: pod-hnw
spec:#声明使用宿主机的网络hostNetwork: truecontainers:- name: c1image: nginx:1.16.1-alpine # 查看pod [rootk8s1 pod]# kubectl get pods -o wide # 此时可以外部浏览器访问 2.宿主机端口映射 # 编辑pod清单 [rootk8s1 pod]# vi pod-hostport.yaml apiVersion: v1
kind: Pod
metadata:name: my-pod-hpm
spec:nodeName: k8s2containers:- name: c1image: nginx:1.16.1-alpine#声明容器与宿主机端口映射ports:- name: c1-port#容器端口containerPort: 80#宿主机端口hostPort: 99#指定访问协议默认不写是TCP协议其实不用写# protocol: TCP# 创建pod资源 [rootk8s1 pod]# kubectl apply -f pod-hostport.yaml pod/my-pod-hpm created # 外部浏览器访问 http://{ip}:99 五、pod中容器的环境变量env
pod中的环境变量跟linux一致keyvalue [rootk8s1 ~]# nameoslee [rootk8s1 ~]# echo $name oslee 也就是说我们通过pod资源清单的编写可以为容器中声明env环境变量 # 编辑pod资源清单 [rootk8s1 ~]# vi pod-env.yaml apiVersion: v1
kind: Pod
metadata:name: pod-env
spec:containers:- name: c1image: nginx:1.16.1-alpine#声明环境变量env:#name就是key- name: oslee#value就是value值value: hello- name: k8svalue: 1.23.17 # 创建pod资源 [rootk8s1 ~]# kubectl apply -f pod-env.yaml pod/pod-env created # 测试变量 [rootk8s1 ~]# kubectl exec -it pod-env -- /bin/sh / # echo $oslee hello / # echo $k8s 1.23.17