ReplicationController

存活探针

Kubemetes有以下三种探测容器的机制:

  • HTTPGET探针对容器的IP地址(你指定的端口和路径)执行HTTPGET请求,如果探测器收到响应,并且响应状态码不代表错误(换句话说,如果HTTP 响应状态码是2xx或3xx), 则认为探测成功。

    如果服务器返回错误响应状态 码或者根本没有响应,那么探测就被认为是失败的,容器将被重新启动。
  • TCP套接字探针尝试与容器指定端口建立TCP连接。如果连接成功建立,则 探测成功。否则,容器重新启动。
  • Exec探针在容器内执行任意命令,并检查命令的退出状态码。如果状态码 是o, 则探测成功。所有其他状态码都被认为失败。

基于HTTP的存活探针

创建(只截取容器配置的部分)

spec:
containers:
- name: IMAGE_NAME
image: WAREHOUSE/NAMESPACE/IMAGE_NAME:TAG
# 一个基于HTTP GET的存活探针
livenessProbe:
# 第一次检测在容器启动15秒后
initialDelaySeconds: 15
httpGet:
port: 8080
path: /

ReplicationController

  1. 创建ReplicationController的yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: app
spec:
# 这里的selector可以删除,这样的话会默认从模板(template)中获取标签
selector:
app: app
replicas: 2
template:
metadata:
labels:
app: app
spec:
containers:
- name: app
image: app/1.0
ports:
- containerPort: 8080

2 . ReplicationController(Rc)会根据标签选择器管理符合其标签的所有pod,并维持在replicas设置的数量上。

当有一个pod发生故障然后又需要保留pod以查询日志信息的时候,可以更改pod的标签来移出ReplicationController的管理范围,

这样Rc会重新创建一个pod,故障pod也不会删除,仍然可以根据日志分析故障原因

3 . 注意:修改yaml文件的模板或者标签选择器时,要删除之前创建的pod,不然pod会失去Rc的管理,白白占用内存空间,类似于java中的内存泄漏

4 . 直接编辑Rc的yaml命令,命令执行后会自动生效,可以用来升级pod,但是后面有更好的方法

kubectl edit rc myapp

5 . 有的时候需要删除Rc但是不能删除Rc下面管理的pod,比如需要将Rc升级到ReplicaSet(Rs),可以执行以下命令

kubectl delete re kubia --cascade=false

ReplicationController 与 ReplicaSet 的对比

目前ReplicationController已经被ReplicaSet完全取代了,而我们也不会直接去创建ReplicaSet,是使用Deployment去管理ReplicaSet,在后面会讲到

  • ReplicaSet对标签的匹配规则更加多样化
  • ReplicaSet可以将标签选择器设置为一个数组,只要是这个数组里的标签都会被匹配

    1 . 创建ReplicaSet
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: app
spec:
selector:
matchLabels:
app: app
replicas: 2
template:
metadata:
labels:
app: app
spec:
containers:
- name: app
image: app/1.0
ports:
- containerPort: 8080

2 . 更加强大的标签选择器:matchExpressions

spec:
selector:
matchExpressions:
- key: app
operator: In
values:
- app

每个表达式都必须包含一个key、一 个operator(运算符),并且可能还有一个values的列表(取决于运算符),运算符如下:

  • In : Label的值必须与其中一个指定的values匹配。
  • Notln : Label的值与任何指定的values不匹配。
  • Exists : pod必须包含一个指定名称的标签(值不重要)。使用此运算符时, 不应指定values字段。
  • DoesNotExist : pod不得包含有指定名称的标签。values属性不得指定

如果你指定了多个表达式,则所有这些表达式都必须为true才能使选择器与 pod匹配。如果同时指定matchLabels和matchExpressions, 则所有标签都必须匹配,并且所有表达式必须计算为true以使该pod与选择器匹配

3 . 删除Rs

kubectl delete rs kubia

k8s的ReplicationController的更多相关文章

  1. Kubernetes与容器设计模式

    目录贴:Kubernetes学习系列 在程序设计领域,面向对象设计和面向对象语言是大家最为熟悉和强大的工具,而面向对象除了其强大的核心特性之外,还有人们通过实践总结出来的一系列设计模式,可以用来解决实 ...

  2. Kubernetes之DaemonSet

    1.DaemonSet在每个节点上运行一个pod K8s中Replicationcontroller和ReplicaSet都用于在Kubernetes集群上运行部署特定数量的pod.但是,当希望pod ...

  3. k8s学习 - 概念 - ReplicationController

    k8s学习 - 概念 - ReplicationController 我们有了 pod,那么就需要对 pod 进行控制,就是同一个服务的 podv我需要启动几个?如果需要扩容了,怎么办?这里就有个控制 ...

  4. Kubernetes(k8s)控制器(三):ReplicationController

    目录 一.系统环境 二.前言 三.ReplicationController概览 四.ReplicationController工作机制 五.创建ReplicationController 六.扩展r ...

  5. k8s入门系列之guestbook快速部署

    k8s集群以及一些扩展插件已经安装完毕,本篇文章介绍一下如何在k8s集群上快速部署guestbook应用. •实验环境为集群:master(1)+node(4),详细内容参考<k8s入门系列之集 ...

  6. k8s dns 服务安装配置说明

    1. 提前条件 安装k8s 集群 2.  dns  安装配置 安装方式: 使用controller  service controller  脚本: 基于官方改动 apiVersion: v1 kin ...

  7. 第四十四章 微服务CICD(6)- gitlab + jenkins + docker + k8s

    总体流程: 在开发机开发代码后提交到gitlab 之后通过webhook插件触发jenkins进行构建,jenkins将代码打成docker镜像,push到docker-registry 之后将在k8 ...

  8. k8s入门系列之扩展组件(二)kube-ui安装篇

    kube-ui是k8s提供的web管理界面,可以展示节点的内存.CPU.磁盘.Pod.RC.SVC等信息. 1.编辑kube-dashboard-rc.yml定义文件[root@master kube ...

  9. k8s入门系列之扩展组件(一)DNS安装篇

    DNS (domain name system),提供域名解析服务,解决了难于记忆的IP地址问题,以更人性可读可记忆可标识的方式映射对应IP地址. Cluster DNS扩展插件用于支持k8s集群系统 ...

  10. 搭建docker私有仓库,建立k8s集群

    服务器IP角色分布 192.168.5.2 etcd server 192.168.5.2 kubernetes master 192.168.5.3 kubernetes node 192.168. ...

随机推荐

  1. 【Zookeeper】Re02 CuratorAPI

    Curator,提供给Java操作ZK的API组件: 需要的组件依赖: <!-- https://mvnrepository.com/artifact/org.apache.curator/cu ...

  2. xshell终端——多个窗格同步输入——xshell同时控制多个窗口的快捷方式

    参考: https://blog.csdn.net/m0_58347801/article/details/129551382 ======================== 突发发现了终端的另类用 ...

  3. ubuntu18.04 源码方式安装wine , 警告,libxrender 64-bit development files not found, XRender won't be supported.

    警告信息: configure: WARNING: libxrender 64-bit development files not found, XRender won't be supported. ...

  4. PyTorch视觉模型库torchvision.models介绍

    安装pytorch时我们一般都是会一并选择安装自带的视觉模型库 torchvision ,  该库不仅有经典的视觉模型结构同时还提供了对应参数的下载功能,可以说torchvision库是十分方便于研究 ...

  5. [COCI2015-2016#1] RELATIVNOST 题解

    前言 题目链接:洛谷. 这道题有很多做法,但是模拟赛寄了,故记之. Update on 2024.7.23 修复了一处时间复杂度的笔误. 题意简述 给你两个长为 \(n\) 的序列 \(A\) 和 \ ...

  6. LVGL btn组件

    /************************************************* * * file name:widget_line.c * author :momolyl@126 ...

  7. sqlserver 索引优化 CPU占用过高 执行分析 服务器检查[转]

    SELECT TOP 10 [Total Cost] = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans) ...

  8. IDEA中try/catch快捷键

    Ctrl + Alt + t

  9. 直播机--蓝松绿幕抠图SDK功能表

  10. Ubuntu 16.04 安装 python3.8

    Ubuntu 16.04  amd64 (64bit)(纯净版) 自带python2.7和python3.5 执行"whereis python"查看当前安装的python [ro ...