蓝盟IT小贴士,来喽!
复制控制器管理吊舱的生命周期,并确保随时运行所需数量的吊舱。
有谁考虑过监督和管理在Kubernetes集群内运行的“吊舱pod”的准确数量吗? 虽然Kubernetes可以通过多种方式实现这一点,但一种常见的方法是使用复制控制器复制控制器(RC )。 RC管理吊舱的生命周期,并随时确保所需数量的吊舱在运行。 另一方面,我们不负责高级群集功能,如自动扩展、准备、活动发现和其他高级复制功能。 Kubernetes群集中的其他组件可以更好地执行这些功能。
简单地说,RC的作用有限,经常用于实现特定要求而不需要复杂的逻辑的具体实现。 例如,确保所需的吊舱数量始终与指定的数量相匹配。 如果超过所需数量,RC将删除多余的,并确保即使节点发生故障或吊舱关闭,也存在相同的数量。
很简单,不需要复杂的解决方案。 对我来说,这就是RC如何被使用的完美比喻。
创建RC的方法
与大多数Kubernetes资源一样,可以以YAML或JSON格式创建RC,并将其发布到Kubernetes API端点。
$ kube CTL创建- f RC示例. YAML
复制控制器/复制的
现在,让我们详细看看rcexample.yaml的情况。
API版本: v1
kind :复制控制器RC描述符
元数据:
name: rcexample 复制控制器名称
spec:
replicas: 3 预计的吊舱数
selector: 该RC的吊舱选择器
app: nginx
template: 用于创建新吊舱的模板元数据:
标签:
app: nginx
spec:
容器:
- name: nginx
image: nginx
此外,该文件在运行时创建一个名为rcexample的RC,以确保nginx的三个吊舱实例始终在运行。 如果一个或所有app=nginx吊舱没有运行,则将基于定义的吊舱模板创建新的吊舱。
RC包括三个部分:
复制副本: 3
吊舱模板: app=nginx
吊舱选择器: app=nginx
请注意,吊舱模板应与吊舱选择器匹配,以防止RC继续创建吊舱。 如果创建的RC的吊舱选择器与模板不匹配,Kubernetes API服务器会给你一个错误。
要验证是否已创建RC rcexample,请执行以下操作:
$ kube CTL获取点
名称就绪状态重新启动页
RC Example-53t hy0/1运行0 10s
RC example-k0xz 60/1运行0 10s
RC example-q3vkg0/1运行0 10s
要删除RC,请执行以下操作:
$ kube CTL删除RC RC样本
复制控制器“RC示例”已删除
请注意,可以对RC中的服务使用滚动更新策略来逐个替换吊舱。
复制集装箱的其他方法
在Kubernetes部署中,有多种实现容器复制的方法。 Kubernetes成为容器平台的主要选择之一是复制容器以获得可靠性、负载平衡和扩展的本机功能。
我展示了你如何简单地制作RC,以便随时可以使用一定数量的吊舱。 可以通过更新副本的数量来手动扩展吊舱。另一种可能的方法是使用复制集replicaset(RS )来实现复制的目的。
(kind :复制件)
RS的功能几乎和RC一样。 主要区别在于,RS不允许滚动更新策略。
实现复制的另一种方法是使用“部署部署”。
(kind :部署)
部署是一种更高级的容器复制方法。 在功能上,部署提供相同的功能,但可以根据需要推送和回滚更改。 这个功能之所以能够实现,是因为引入了“战略类型StrategyType”的规格,可以用新的吊舱替换旧的吊舱。 可以定义两种部署策略:“重新创建Recreate”和“滚动更新”。 部署战略可以指定如下:
策略类型:滚动更新
总结
容器复制功能是许多公司考虑采用Kubernetes的主要原因之一。 复制作为生产环境的最低要求,可以实现大多数关键APP复制所需的可靠性和可扩展性。
文/上海蓝盟 IT外包专家