Blog

重学容器30: 容器资源限制之限制容器的进程数量

2021-07-29
Containerd, Kubernetes

容器的单进程模型 #

容器的单进程模型是指推荐在一个容器里只运行一个进程容器的单进程模型并不是说容器里只能运行一个进程,而是因为容器本身没有管理多个进程的能力,推荐在一个容器里只运行一个进程。 在正常的Linux操作系统里都有个1号进程init,例如CentOS的systemd,所有的其他进程都是1号进程的子进程或者是子进程的子进程。 1号进程具有进程管理能力,例如对僵尸进程的管理。而容器中的1号进程就是容器运行的应用本身,它是没有进程管理能力的,所以推荐在容器中只运行一个进程。

...

istio 1.10学习笔记11: Istio流量管理之访问外部服务的三种方法

2021-07-28
Istio

在默认情况下所有istio服务网格内某个服务实例的出战流量都将被重定向到其Envoy Sidecar代理,集群外部URL的可访问性取决于Sizdecar代理的配置。 在默认情况下,isito将Envoy代理配置为允许传递请求到未知服务(未在isito服务发现中注册的服务),这带来了一定的便利性,但一般情况下在生产环境建议配置更为严格的配置。 在实际中,由我们负责开发的部署在服务网格中的服务往往还需要访问一些外部资源,如外部的API、中间件等,这就需要配置从istio服务网格内访问外部服务的方式。

...

重学容器29: 容器资源限制之限制容器的CPU

2021-07-28
Containerd, Kubernetes

在最近25~28节,学习了容器镜像构建的一些实践和技巧,使用Containerd替代Docker后,使用buildkit作为容器镜构建工具,到此对容器镜像构建的学习先告一段落。

在前面第6节学习了容器资源限制背后的技术cgroups的基本概念,并以cgroups cpu子系统为例体验一下手动设置cgroup。 先简单复习一下第6节的内容。使用CGroups可以控制的资源有: CPU、内存、网络、IO、文件设备等,因为计算资源(CPU)是cgroups资源限制中最重要的一种资源之一,本节将详细介绍一下如何使用cpu cgroup限制容器CPU的使用。

...

istio 1.10学习笔记10: Istio流量管理之流量镜像

2021-07-27
Istio

流量镜像,也叫称为影子流量,是指将实时流量的副本发送到镜像服务。镜像流量发生在主服务的关键请求路径之外。 本节将测试使用istio流量管理中的流量镜像功能。会在k8s的default命名空间内部署httpbin服务的v1和v2两个版本,首先把流量全部路由到httpbin:v1,然后执行规则将一部分流量镜像到v2版本。

...

重学容器28: 容器镜像构建技巧之使用secret给Dockerfile传递敏感信息

2021-07-27
Containerd

在构建容器镜像时,有的时候需要在Dockerfile中使用一些敏感信息,例如下面的Dockerfile:

1FROM python:3
2......
3WORKDIR /usr/src/app
4RUN  pip3 install -r /usr/src/app/requirements.txt -i https://username:[email protected]/simple
5......

这是构建一个python应用镜像的Dockerfile,在从私有pip源安装依赖时需要在Dockerfile中用到私有源仓库的用户名和密码。如果像上面这个Dockerfile这样写的话,用户名和密码就会暴露在构建出的镜像中,并随着镜像的分发泄露出去。

...

istio 1.10学习笔记09: Istio流量管理之设置请求超时和熔断

2021-07-26
Istio

前面几节内容我们学习了Istio API资源对象中的虚拟服务VirtualService, 目标规则DestinationRule, Gateway。 使用它们可以实现将集群外部流量(http或tcp)接入到服务网格内部,可以进行一些常见的流量管理功能如: 设置请求路由、故障注入、流量转移(http或tcp)等。 本节我们学习使用istio进行流量管理的另外两个常见功能:设置请求超时和熔断。

...

重学容器27: 容器镜像构建技巧之构建体积更小的镜像和多阶段构建

2021-07-26
Containerd

在构建容器镜像时,会用到一些技巧以构建出体积更小的镜像,以在镜像分发和容器部署时获得更快的速度。

构建体积更小的镜像 #

一个镜像是由很多层(Layers)组成的,Dockerfile中的每条指令都会创建镜像层,但只有RUN, COPY, ADD会使镜像的体积增加。 理解了镜像层后,显而易见构建体积更小的镜像的需要从两个方面着手: 精简镜像层数精简镜像每层的大小

...

istio 1.10学习笔记08: Istio流量管理之TCP流量转移

2021-07-25
Istio

上一节我们学习了使用Istio Gateway将集群内的http服务暴露到集群外部。 Istio Gateway在接入集群外部流量时与K8S的Ingress类似istio-ingressgateway组件相当于k8s里的ingress-controller。 Istio Gateway对于K8S的不同之处在于在Istio Gateway资源中只定义对外暴露的端口、协议、域名,对于路由信息需要使用Istio的虚拟服务VirtualService的路由规则来配置,这样就可以将Istio提供的各种各样的功能应用到接入集群的流量上。

...

重学容器26: Dockerfile代码规范检测工具hadolint

2021-07-25
Containerd

上一节学习了一些实际工作中编写Dockerfile的实践经验,本节给大家推荐一款Dockerfile的代码规范检查工具hadolint。 hadolint的项目地址是https://github.com/hadolint/hadolint,它是一个智能的Dockerfile linter,帮助检查Dockerfile的编写是否满足最佳实践的规范。hadolint将Dockerfile解析为一个AST抽象语法树,并在AST之上执行规则。它是基于ShellCheck检查RUN指令中的Bash代码的。

...

重学容器25: 编写Dockerfile的一些实践经验

2021-07-24
Containerd

前面2节学习了容器存储挂载的基础知识,本节开始学习容器镜像构建相关知识。 当使用Containerd作为容器运行时,我们构建容器镜像的工具链发生了变化,前面在《第11节,容器镜像构建工具和方案介绍》中介绍了替代docker build的一些方案。 我们在实际中选择的是buildkit。关于buildkit,分别在《第5节,使用nerdctl + buildkitd构建容器镜像》《第12节,使用buildkit实现容器镜像的远程构建,《第13节,在k8s集群上部署buildkit 》做了详细的介绍。

...

© 2024 青蛙小白