ls 按照时间排序
ls -lt
两个文件按照行diff
diff -w test.sh test2.sh
diff test.sh test2.sh
awk 获取最后一行
awk ‘{print $NF}’
k8s 中几种探针方式
- livenessProbe 捕获死锁。决定容器何时重启
- readinessProbe 检查容器是否准备好接收流量。
- startupProbe 检查容器内服务是否启动完成, 启动探针可以用于对慢启动容器进行存活性检测,避免它们在启动运行之前就被 kubelet 杀掉。
k8s集群组件
kube-apiserver
etcd
kube-controller-manager
kube-scheduler
kubelet
kube-proxy
容器运行时(如 Docker)
网络插件(如 Calico、Flannel 等)
存储插件(如 Ceph、NFS 等)
创建pod 的过程
- 用户通过kubectl或其他工具提交pod的yaml配置到API Server
- API server 收到请求,验证请求,把配置信息存储到etcd中
- Scheduler 监听到新pod创建,根据调度策略将pod调度到节点
- kubelet 发现该节点需要创建pod
- 拉取镜像
- 创建sandbox,sandbox中所有容器共享网络和存储命名空间
- 调用容器运行时创建pod中的容器
- 如果有init容器,kubelet先于应用容器启动他们
- aws-node 创建pod网卡,分配IP地址
- 健康检查,启动探针、就续探针、存活探针启动运行
- kubelet 将pod的状态更新到API服务器,信息上传到etcd达到全局一致
ingrss 创建方式
yaml 配置…
dockerfile add 、copy区别
ADD : 在需要从 URL 下载或自动解压本地压缩文件时使用
- 如果源是本地压缩文件,会自动解压
- 可以从远程URL获取资源,如从HTTP服务器下载文件
优先推荐使用COPY
如何减少镜像体积
- 使用小的基础镜像
- dockerfile 中的每个 FROM、RUN、COPY 命令都会创建一个单独的层,并增加镜像的整体大小和构建时间。将多个命令使用一个层数(FROM、RUN、COPY)
- 使用多阶段构建
- 清理不必要的文件(yum clean all删除包管理缓存)
- 最后删除安装包
- 将库文件或者安装包copy入进行而不是直接安装
- 使用dockerignore 文件
如何将运行的容器打印成镜像
docker commit <container_id> <image_name>
ps: docker save 将镜像保存为tar文件,docker load 从tar文件加载镜像
CICD流程
git clone – complie – build – push
