Kubernetes-Init容器的六个特性
2023-10-07 09:52:30本文主要从以下四个方面介绍Init容器:Init容器作用、Init容器特性、Init容器与应用容器的区别、Init容器实战。
本文主要从以下4个方面介绍Init容器:Init容器作用、Init容器特性、Init容器与应用容器的区别、Init容器实战。
Kubernetes中的Pod内可以运行多个容器,主要分为2种:Init容器、应用容器,Sidecar容器也是一种特殊的Init容器。
Init容器的作用
Init 容器是一种特殊容器,在Pod内的应用容器启动之前运行。用于执行一些初始化的任务或设置,或者用于延迟执行应用容器。
有不少场景都需要在应用容器启动之前进行部分初始化操作,比如:等待某个服务需要等待其关联的服务可用后才启动、从配置中心获取配置后再启动 等。
Init容器的特性
Init容器与应用容器的关系

Init 容器与应用容器非常像,Init容器支持应用容器的全部字段和特性,包括资源限制、数据卷和安全设置,Init容器与应用容器共享数据卷和网络。关系如下图:
但是Init容器与应用容器也有三点不同:
Init容器使用实战
实战描述
yaml编排文件如下
apiVersion: v1kind: Podmetadata:name: init-CONtainer-testnamespace: demolabels:app: init-container-testspec:nodeName: k8s-worker-1initContainers:- name: downloadimage: busyboxcommand:- wget- -O- /temp-dir/index.html-name: temp-dirmountPath: /temp-dircontainers:- name: web-appimage: nginxports:- containerPort: 80hostPort: 8082volumeMounts:- name: temp-dirmountPath: /usr/share/nginx/htmlvolumes:- name: temp-diremptyDir: {}
执行kubectl describe pod init-container-test -n demo命令,可以看到有两处容器:
如果Init容器执行有异常,可以看到Pod会被不停地重启。
总结
本文主要从以下四个方面介绍Init容器:Init容器作用、Init容器特性、Init容器与应用容器的区别、Init容器实战。
重点要注意:
gitlab 502错误
通常是unicorn端口冲突报错,但是也遇到过模块没有正常运行导致的502错误sudo gitlab-ctl status 查看下是否是prometheus这一数据监控模块没有正常运行,如果没有正常运行的话可以关闭cd /etc/gitlab/修改以下内容,把ture改为falseprometheus[monitor_kubernetes] = false重新reconfigure启动。
怎么在kubernetes里面搭建hadoop集群
Kubernetes是一个开源项目,它把谷歌的集群管理工具引入到虚拟机和裸机场景中。 它可以完美运行在现代的操作系统环境(比如CoreOS和Red Hat Atomic),并提供可以被你管控的轻量级的计算节点。 Kubernetes使用Golang开发,具有轻量化、模块化、便携以及可扩展的特点。 我们(Kubernetes开发团队)正在和一些不同的技术公司(包括维护着Mesos项目的MesoSphere)合作来把Kubernetes升级为一种与计算集群交互的标准方式。 Kubernetes重新实现了Google在构建集群应用时积累的经验。 这些概念包括如下内容:Pods:一种将容器组织在一起的方法;Replication Controllers:一种控制容器生命周期的方法(译者注:Replication Controller确保任何时候Kubernetes集群中有指定数量的pod副本(replicas)在运行);Labels:一种可以找到和查询容器的方法;Services:一个用于实现某一特定功能的容器组;因此,只要使用Kubernetes你就能够简单并快速的启动、移植并扩展集群。 在这种情况下,集群就像是类似虚拟机一样灵活的资源,它是一个逻辑运算单元。 打开它,使用它,调整它的大小,然后关闭它,就是这么快,就是这么简单。 Mesos和Kubernetes的愿景差不多,但是它们在不同的生命周期中各有不同的优势。 Mesos是分布式系统内核,它可以将不同的机器整合在一个逻辑计算机上面。 当你拥有很多的物理资源并想构建一个巨大的静态的计算集群的时候,Mesos就派上用场了。 有很多的现代化可扩展性的数据处理应用都可以在Mesos上运行,包括Hadoop、Kafka、Spark等,同时你可以通过容器技术将所有的数据处理应用都运行在一个基础的资源池中。 在某个方面来看,Mesos是一个比Kubernetes更加重量级的项目,但是得益于那些像Mesosphere一样的贡献者,Mesos正在变得更加简
发表评论