班级建设怎样建立班级网站,购物帮做特惠的导购网站,中国住房和城乡建设部查询网站6,有服务器域名源码怎么做网站平台目录
pod概念
pod的分类
1.基础容器 pause
2.初始化容器 init
实验#xff1a;定义初始化容器
init容器的作用
实验#xff1a;如何在容器内部进行挂载
镜像拉取策略 pod概念
pod是k8s里面的最小单位#xff0c;pod也是最小化运行容器的资源对象。容器是基于pod在k…目录
pod概念
pod的分类
1.基础容器 pause
2.初始化容器 init
实验定义初始化容器
init容器的作用
实验如何在容器内部进行挂载
镜像拉取策略 pod概念
pod是k8s里面的最小单位pod也是最小化运行容器的资源对象。容器是基于pod在k8s集群当中工作的。在k8s集群当中一个pod就代表着一个运行的进程k8s的大部分组件都是围绕pod来进行的主要是对pod进行支撑和扩展。deployment和service都是围绕pod来进行部署的。
k8s的pod有两种使用方式
1.一个pod里面只有一个容器。这是最常见的方式。k8s管理的是pod而不是容器
2.一个pod里面有多个容器。即使有多个容器它们之间也是共享网络、共享挂载卷。
现在容器的技术要求一个pod下的容器必须运行在同一个节点上。因为它们之间要共享网络、共享挂载卷所以并不是pod自身提供的功能而是pause容器提供共享网络和共享挂载卷。
流向图 流程要在k8s集群上创建pod此时集群分配到一个节点上在节点上r创建pod的过程先把pause镜像运行起来初始化镜像然后才拉取nginx镜像在运行过程中pause镜像不参与只有删除的时候才参与在删除镜像的过程中回收容器的资源和容器内的僵尸进程然后再通知kubeletkubelet回收pod然后通知apiserver然后通过apiserver存储到etcd
注其中要先有pause基础容器然后才拉取nginx镜像
pod的分类
1.基础容器 pause
用来共享网络、共享挂载卷
2.初始化容器 init
这种初始化容器包含在pod内部属于pod的组成部分之一而且伴随着pod的生命周期当中的一个环节启动环节。
当我们拉起一个pod时先构建pause构建完成之后如果包含初始化容器必须要等到初始化容器部署完成之后才会部署应用容器。
实验定义初始化容器
mkdir k8s-yaml
cd k8s-yaml/
vim init.yaml
apiVersion: v1
kind: Pod
metadata:name: init-podlabels:app: test1
spec:initContainers:
#定义pod内部的初始化容器一个pod里面可以有多个容器它包含初始化容器- name: centos1image: centos:7command: [/bin/bash,-c,echo 123 /opt/123.txt sleep 2]
#多个命令用 ; 表示逻辑或用 表示逻辑且 - name: centos2image: centos:7command: [/bin/bash,-c,echo 456 /opt/456.txt sleep 2]containers:
#业务容器- name: centos3image: centos:7command: [/bin/bash,-c,echo system is running sleep 3600]这里会有三个问题
1.怎么查看这三个容器
kubectl exec -it pod名称 -c 容器名 bash
kubectl logs -f pod名称 -c 容器名 bash 查看日志
初始化容器运行完成之后即使命完成之后就退出了但是节点上的容器还在这个时候只能查询到业务容器的日志和状态。
初始化容器运行完毕之后必须要退出否则后续的容器无法继续构建。也就是初始化容器后要加command
2.这三个容器的启动先后顺序是什么 启动的先后顺序先启动初始化的容器再启业务容器。
3.初始化容器启动失败后pod能否进入ready状态
不能
init容器的作用
1.创建pod的时候可以为业务容器初始化运行条件以及提供环境变量和一些软件自定义
2.初始化容器可以访问Secrets权限不需要配置。业务容器必须要配置之后才能访问Secrets
初始化容器的核心作用可以为业务容器运行之前提供一些必要的条件。只有前置条件满足之后那么业务容器才能运行。
实验如何在容器内部进行挂载 apiVersion: v1
kind: Pod
matadata:name: init-podlabels:app: test1
spec:volumes:- name: testdataemptyDir: {}
#容器卷容器内部挂载的数据卷initContainers:
#定义pod内部的初始化 一个pod里面有多个容器 初始化容器- name: centos1image: centos7command: [/bin/bash,-c,echo 123 /opt/123.txt sleep 2]volumeMounts:- name: testdata
#需要和上面的保持一致mountPath: /opt/data
#多个命令用 ; 表示逻辑或用 表示逻辑且name: centos2image: centos7command: [/bin/bash,-c,echo 456 /opt/456.txt sleep 2]volumeMounts:- name: testdata
#需要和上面的保持一致mountPath: /opt/datacontainers:- name: centos3image: centos7command: [/bin/bash,-c,echo system is running sleep 3600]volumeMounts:- name: testdata
#需要和上面的保持一致mountPath: /opt/data镜像拉取策略
1. IfNotPresent 镜像在本地已经存在就不会到镜像仓库再一次拉取镜像 默认方式
2. Always 每次创建pod都会拉取镜像
3. Never 从来不去仓库拉取镜像只使用本地镜像 镜像的标签nginx:1.22
如果不加标签就是nginx 默认就是nginx:laster laster指的是最新版
如果没有镜像拉取策略默认策略就是ifNotPresent但是如果镜像没有指定标签即使没有声明镜像的拉取策略那么默认策略也是 Always