K8S哲学 - Pod、RC、RS、deployment

2024-04-21 16:44

本文主要是介绍K8S哲学 - Pod、RC、RS、deployment,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

pod(最小的可部署单元)

容器组(运行一个或多个容器)

Pod(容器组)是Kubernetes 中最小的可部署单元。
一个Pod(容器组)包含了一个应用程序容器(某些情况下是多个容器)、存储资源、
一个唯一的网络 iP 地址、以及一些确定容器该如何运行的选项。Pod 容器组代表了 Kubernetes 中一个独立的应用程中运行实例,该实例可能由单个容器或几个紧藕合在一
起的容器组成。


Docker 是 Kubernetes Pod 中使用最广泛的容器引擎;
Kubernetes Pod 同时也支诗其他类型的容器引擎

Kubernetes 集群中的Pod 存在如下两种使用途径

一个Pod 中只运行一个容器。"one-container-per-pod " 是Kubernetes 中最常见的使用方式。此时、可以认为 Pod容器组是该容器的 wrapper. Kubernetes 通过 Pod 管理容器,而不是直接管理容器。


一个pod中运行多个需要互相协作的容器。可以将多个紧密耦合、共享资源且始终

在一起运行的容器编排在同一个Pod 中,

pod 副本(replicas)

一个pod可以被复制成多份,每一份可被称之为一个"副本”,这些副本-除了一些描述性的信息 (Pod的名字、uid 等)不一样以外,其它信息都是一样的,譬如Pod
内部的容器 容器数量,容器里面运行的应用等的这些信息都是一样的,这些副本提供同样的功能。
Pod 的“控制器“通常包含一个名为“replicas” 的厲性。“replicas”属性则指定了特定 Pod 的副本的数量,当前集群中该 Pod 的数量与该属性指定的值不一致时,k8s 会采取一些策路去使得当前状态满足配置的要求。

如何共享容器间的 网络?

每个容器有自己独立的网络,

java(容器一) 和 mysql (容器二) 不能通过  locallost连接(相当于容器一本身)

docker 连接同一网络 或  容器间  --links (/etc/host加链接容器ip)

如何共享文件系统? 

docker  连接同一个 volume、

k8s 延伸出pod 来实现 网络、文件系统共享

pod 里面的 基础服务 pause 容器 是 多容器间实现 网络、文件系统共享的基础

控制器

在 Kubernetes 中,Pod 控制器是用于管理 Pod 生命周期的对象。它们可以确保指定数量和类型的 Pod 始终在运行。

无状态:nginx

有状态(statefulSet):mysql、redies

守护进程:日志收集

定时任务:

rc:replicationController 

动态更新 pod副本数 、v1.11后被废弃,用replicaSet替代

repilcas = 3

Kubernetes 官方建议使用 RS (Replicaset)替代RC(ReplicationController)进行部署,RS 跟 RC 没有本质的不同,只是名字不一样,井且 RS 支持集合式的 selector

rs:replicaSet

相较于 replicationController 增加了 lable 和 selector 的机制、可以更为精确对某一个 pod打标签,后期可以只对 选中标签的pod进行操作

lable :app1 、app2 ,将lable为app2的pod的副本设置为 3个 

如果你在 Pod 模板的 metadata.labels 部分定义了多个标签,
如 app=nginx、app2=gyk 和 app3=cnm,
那么 Kubernetes 将在创建每个 Pod 时都会包含这些标签。
这意味着,如果 replicas=3,
那么将会有三个 Pod,每个 Pod 
都包含 app=nginx、app2=gyk 和 app3=cnm 这三个标签在这个例子中,Deployment 将创建三个 Pod,
每个 Pod 都包含 app=nginx、app2=gyk 和 app3=cnm 这三个标签。apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deployment1
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxapp2: gykapp3: cnmspec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80在 Kubernetes 的 Deployment 配置中,
selector.matchLabels 定义了 Deployment 
如何找到它应该管理的 Pod。selector.matchLabels 是一个标签选择器,
它会匹配所有具有指定标签的 Pod。在你的例子中,
selector.matchLabels 是 {app: nginx},
这意味着这个 Deployment 
将管理所有带有 app=nginx 标签的 Pod。在你的配置中,template.metadata.labels 
定义了由这个 Deployment 
创建的每个 Pod 的标签,
包括 app: nginx、app2: gyk 和 app3: cnm。
因为这些 Pod 都有 app=nginx 标签,
所以它们都会被这个 Deployment 管理。

deployment

这篇关于K8S哲学 - Pod、RC、RS、deployment的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/923556

相关文章

Linux系统稳定性的奥秘:探究其背后的机制与哲学

在计算机操作系统的世界里,Linux以其卓越的稳定性和可靠性著称,成为服务器、嵌入式系统乃至个人电脑用户的首选。那么,是什么造就了Linux如此之高的稳定性呢?本文将深入解析Linux系统稳定性的几个关键因素,揭示其背后的技术哲学与实践。 1. 开源协作的力量Linux是一个开源项目,意味着任何人都可以查看、修改和贡献其源代码。这种开放性吸引了全球成千上万的开发者参与到内核的维护与优化中,形成了

云原生容器技术入门:Docker、K8s技术的基本原理和用途

🐇明明跟你说过:个人主页 🏅个人专栏:《未来已来:云原生之旅》🏅 🔖行路有良友,便是天堂🔖 目录 一、容器技术概述 1、什么是容器技术 2、容器技术的历史与发展 3、容器技术与虚拟机的比较 4、容器技术在云原生中的作用 二、Docker基础 1、Docker简介 2、Docker架构 3、Docker与工作原理 三、Kubernetes(k8s)基础 1、

CloudStack基本概念-Zone,Pod,Cluster,Host

ZonePodClusterHost Zone Zone(资源域)是CloudStack部署中第二大的组织单元。Zone一般对应一个数据中心,虽然一个数据中心也可以有多个Zone。 把基础设施组织进Zone的一个好处就是可以提供物理隔离和冗余。 例如每个Zone可以有自己的电源供应和网络线路,并且zone之间可以远远地隔离开(虽然不是必须的) 一个zone包括:

client-go删除job同时删除job关联的pod

问题描述 client-go使用以下方式删除job时,并不会把其关联的pod删除,从而导致这些pod成为了孤儿(orphan): err := clientSet.BatchV1().Jobs(namespace).Delete(name, &metav1.DeleteOptions{}) 在删除job的时候将job关联的pod也删除的方法: propagationPolicy := m

k8s集群master故障恢复笔记

剔除故障节点 kubectl drain master故障节点 kubectl delete node master故障节点 kubeadm reset rm -rf /etc/kubernetes/manifests mkdir -p /etc/kubernetes/pki/etcd/ 从master其他节点拷 scp /etc/kubernetes/pki/ca.crt ca.k

【K8S运维】整理常见使用命令

*特别提醒: 文件复制类的命令,执行命令等需要谨慎确定命令执行后的效果,否则一旦出错就不可逆!!! 命令概览 序号使用场景命令格式使用样例命令使用说明1查询集群节点有多少kubectl get nodes2查询集群运行哪些podkubectl get pods -o wide -A3查询指定pod名称的pod信息kubeclt get pods -o wide -A|grep <具体pod对象

QT 5.8.0 msvc_2015 64bit版本编译错误:-1: error: LNK1158: 无法运行“rc.exe”

一开始安装的时候我出现了另一种错误,换着D盘E盘装了几遍之后,出现了:-1: error: LNK1158: 无法运行“rc.exe”这个错误。 首先,我的系统是Windows10 1903版 64bit QT版本是 5.8.0  msvc_2015 64版 解决方法是将 C:\Program Files (x86)\Windows Kits\8.1\bin\x86\rc.exe, C:

Kubernetes排错(七)-Pod 状态一直 ContainerCreating

查看 Pod 事件 $ kubectl describe pod apigateway-6dc48bf8b6-l8xrw -n cn-staging 异常原因 1)no space left on device ...Events:Type Reason Age From Me

【云原生】Docker可视化工具Portainer使用详解

目录 一、前言 二、docker可视化管理概述​​​​​​​ 2.1 什么是docker可视化管理 2.1.1 Docker可视化管理常用功能 2.2 为什么需要docker可视化管理工具 2.3 docker可视化工具带来的好处 三、常用的docker容器可视化管理工具解决方案 3.1 Portainer 3.2 Rancher 3.2.1 Rancher功能特性 3.

K8S - 实现statefulset 有状态service的灰度发布

什么是灰度发布 Canary Release 参考 理解 什么是 滚动更新,蓝绿部署,灰度发布 以及它们的区别 配置partition in updateStrategy/rollingUpdate 这次我为修改了 statefulset 的1个yaml file statefulsets/stateful-nginx-without-pvc.yaml: ---apiVersio