【K8S】Kubernetes 中有状态的资源对象——StatefulSet

Kubernetes自动化运维实战:从集群搭建到应用部署与故障排查 容器技术作为现代应用交付的核心,通过标准化封装解决了环境一致性问题,但其大规模管理面临挑战。容器编排平台通过声明式API和控制循环机制,自动实现应用的部署、伸缩、更新与自愈,从而释放运维生产力,提升系统可靠性和资源利用率。这一技术广泛应用于微服务架构、持续交付和混合云场景,是实现DevOps和云原生转型的关键基础设施。本文聚焦Kubernetes这一主流容器编排系统,结合安装部署、常用命令等高频需求,通过实战演示如何利用其自动化能力管理容器化应用,并涵盖ConfigMap权限配置、Prometheus外部监 阅读详情

一、StatefulSet 资源对象需求背景

现在基本上很多服务中的应用都是有状态的,比如MySQL数据库、Redis等,因为其中的数据在不断地变化,所以这些应用每个时刻都处于一个不同的状态。或者一个系统中存在多个不同的应用,这些应用存在一定的依赖关系。例如一个博客服务,该服务中包含了Redis缓存和MySQL数据库,我们在启动时需要先启动 MySQL数据库,Redis缓存,再去启动博客应用。Kubernetes 未这种存在状态的应用专门设计了一种资源对象,就是 StatefulSet。

StatefulSet用来描述有状态的应用,它把真实世界应用的状态,基本上归纳为2种情况:

  • 拓扑状态:应用的多个实例之间的关系不是完全对等的,在启动时必须要按照指定的顺序才能启动。即便是pod
  • 存储状态:应用的多个实例(Pod)分别绑定了不同的存储数据,即便是实例(Pod)被删除重建,重建后的实例还是能读到原来的那一份数据。

StatefulSet资源对象的核心功能就是能够通过某种方式记录这些状态,在这些实例(Pod)被重新创建时,能够为新的实例(Pod)恢复这些状态。

StatefulSet资源对象,在执行控制循环的时候,使用的是在yaml文件中serviceName字段的key-value匹配到的Headless Service类型的Service资源对象,来确定要使用的Pod。

二、在 Yaml 文件中定义 StatefulSet 资源对象

StatefulSet 资源对象类似于 Deployment 资源对象,都是包含多个 Pod 副本,但是 Deployment 资源对象的 Pod 副本Pod 名称不固定,而且启动顺序也是随机的,但是 StatefulSet 资源对象Pod 副本的名称是固定的,且启动关系也是确定的。

2.1 StatefulSet 资源对象状态

  • StatefulSet 资源对象的Pod 副本名一般取值为节点名 + 序号(序号从0开始,最大值未Pod副本数目-1)。StatefulSet 资源对象的Pod副本的启动先后顺序依赖于这个Pod副本的序号。
  • StatefulSet 资源对象的访问需要额外的创建对应的 Service 资源对象,该Service 资源对象的名称要与 StatefulSet 资源对象中定义的 ServiceName 一致。

2.2 StatefulSet 资源对象定义

StatefulSet 资源对象的简称是sts。下面是 StatefulSet 资源对象与其对应的 Service 资源对象在 Yaml 文件中定义的内容示例:

apiVersion: apps/v1		# API 资源对象的版本
kind: StatefulSet		# API 资源对象的类型
metadata:
  name: test-sts		# # API 资源对象名

spec:
  serviceName: test-svc
  volumeClaimTemplates: 		# 在StatefulSet 资源对象中直接定义对应的PVC
  - metadata:
      name: test-redis-pvc		# 定义了该 PVC 的名称
    spec:
      storageClassName: nfs-client		# 明确PVC与PV绑定的StorageClass
      accessModes:		# 定义需要的存储设备的权限
        - ReadWriteMany
      resources:		# 定义需要的存储容量大小
        requests:
          storage: 60Mi

  replicas: 2		# 明确 statefulSet 资源对象对应的 pod 副本数
  selector:		# 定义statefulSet 标签选择器
    matchLabels:
      app: test-sts

  template:
    metadata:		# statefulSet资源对象下Pod 副本中的标签
      labels:
        app: test-sts
    spec:
      containers:
      - image: redis:5-alpine
        name: redis
        ports:
        - containerPort: 6379

        volumeMounts:
        - name: test-redis-pvc
          mountPath: /redis-data
---
apiVersion: v1
kind: Service
metadata:
  name: test-svc

spec:
  selector:
    app: test-sts
  ports:
  - port: 6379
    protocol: TCP
    targetPort: 6379

2.3 StatefulSet 资源对象

与我们之前讨论的 Deployment 资源对象相比,StatefulSet 资源对象的定义主要有2处独特之处,一个是serviceName,一个是volumeClaimTemplates。

  • serviceName: 该字段规定了使用 DNS 访问Pod时,Pod所属的子域。形式如:$(pod 名称).$(serviceName)
  • volumeClaimTemplates: StatefulSet 资源对象内置的专门用于定义 PVC 的字段;

因为 StatefulSet 资源对象是有状态的,不存在 Pod 漂移的情况,因此可以通过域名 \$(pod 名称).\$(serviceName) 被稳定的访问。

三、StatefulSet 资源对象的使用

利用上面的Yaml 文件,我们通过如下命令直接创建 StatefulSet 和 Service 资源对象:

kubectl apply -f test-svc-sts.yaml

通过如下命令可查看 statefulSet 资源对象和 service 资源对象的状态,同时使用hostname 命令查看短格式节点名与Pod名称的关系:

# 查看节点名短格式
hostname
# 查看StatefulSet资源对象状态
kubectl get sts
# 查看Service资源对象状态
kubectl get svc
# 查看资源对象test-sts详细信息
kubectl describe test-sts
# 查看资源对象test-svc详细信息
kubectl describe test-svc
k8s之部署有状态应用 本文一起看下k8s对于有状态应用部署提供的解决方案。 阅读详情

相关推荐

k8s 控制器-Statefulset & ConfigMap

k8s StatefulSet ConfigMap

高飞的博客 29万+

k8s之StatefulSet

快速了解StatefulSet

Crazy博客 4980

【K8S 系列】k8s 核心概念

(2)副本(replicas):一个 Pod 可以被复制成多份,每一份可被称之为一个“副本”,这些“副本”除了一些描述性的信息(Pod 的名字、uid 等)不一样以外,其它信息都是一样的,譬如 Pod 内部的容器、容器数量、容器里面运行的应用等的这些信息都是一样的,这些副本提供同样的功能。(3)downwardAPI 这个模式和其他模式不一样的地方在于它不是为了存放容器的数据也不是用来进行容器和宿主机的数据交换的,而是让 pod 里的容器能够直接获取到这个 pod 对象本身的一些信息。

m0_73901077的博客 2178

k8s实践(13)--有状态服务StatefulSet详解

最近项目搭建基于StatefulSet创建常驻pod的GPU虚机平台,项目接近尾声,在此顺便做了个总结,温故而知新,而不是走马观花,浅尝辄止懂些概念。 一、k8s集群的服务分类 在K8S运行的服务,从简单到复杂可以分成三类:无状态服务、普通有状态服务和有状态集群服务。下面分别来看K8S是如何运行这三类服务的。 1、无状态服务(Stateless Service): 1)定义:是指该服务运行的实例不会在本地存储需要持久化的数据,并且多个实例对于同一个请求响应的结果是完全一致的。 2)随意扩容和缩

黄规速博客:学如逆水行舟,不进则退 9322

【K8S系列】深入解析有状态服务

在 Kubernetes 中,有状态服务可以使用StatefulSet 来进行部署和管理。StatefulSet 可以确保有状态服务的有序部署和缩放,并在节点失败时自动重新启动实例。与 Deployment 不同,StatefulSet 提供了稳定的网络标识符和稳定的存储卷名称,以确保有状态服务在重新调度后仍能够保持其身份和数据。

颜淡慕潇 2万+

解决Linux下Questasim中代码字体非常小

Questasim的source窗口里代码字体非常小 你是不是也遇到这样的问题,在使用Vmware时,Questasim的代码字体非常小,小到完全看不见,连断点都没办法标记。 下面我给出我摸索好久的解决办法,分享给大家。 1.首先,版本是Questasim 10.7c,在Vmware16中打开,情况如下: 不多逼逼,直接上图开搞: 给textFontV2设置值:monospace 12 normal roman 这里一定要注意啦,点完apply之后,不要点ok,直接关闭窗口。 ...

SummerXRT的博客 7815

k8s之StatefulSet详解

本篇是基于k8s-v1.15.0版本。 1、介绍 RC、Deployment、DaemonSet都是面向无状态的服务,它们所管理的Pod的IP、名字,启停顺序等都是随机的,而StatefulSet是什么?顾名思义,有状态的集合,管理所有有状态的服务,比如MySQL、MongoDB集群等。 StatefulSet本质上是Deployment的一种变体,在v1.9版本中已成为GA版本,它为了解决有状态服务的问题,它所管理的Pod拥有固定的Pod名称,启停顺序,在StatefulSet中,Pod名字称为网络标识

最美dee时光的博客 6万+

XMind文件解析黑科技:用Python实现版本自适应读取(兼容2010-2024)

本文深入探讨了如何利用Python实现XMind文件的版本自适应解析,兼容从2010到2024年的各版本。通过分析XMind文件作为ZIP压缩包的本质,文章提供了智能探测文件内部结构(JSON或XML)并构建健壮读取逻辑的完整方案,有效解决了版本兼容性难题,并演示了将解析数据转换为PlantUML等下游应用的实战案例。

weixin_29041767的博客 683

K8S-7--K8s资源对象(API/pod探针/sevice/volume/Statefulset/DaemonSet/PV/PVC/)/结合ceph

Day7(10.10)作业: 1、使用configmap为nginx、mysql提供一个配置文件并验证 2、总结一下PV/和PVC的特性 3、基于PV、PVC运行zookeeper、nginx等服务 4、自定义镜像-运行nginx与tomcat并结合PV/PVC/NFS以实现动静分离示例 通过service进行服务之间的调用 nginx通过tomcat service调用tomcat 5、k8s结合ceph rbd、cephfs实现数据的持久化和共享 6、实现基于探针对pod中的访问的健康状态检查,并总结.

weixin_44515412的博客 3073

IDEA 2023.2.3全平台安装指南:Mac/Windows/Linux一键激活(附最新补丁获取)

本文提供IDEA 2023.2.3在Mac、Windows和Linux三大平台的一键安装与激活指南,包含最新补丁获取方法。详细讲解各系统安装流程、性能调优设置及高效开发技巧,帮助开发者快速配置并提升工作效率。

weixin_28832121的博客 398

EDF Browser使用说明和技巧

edf browser使用说明和一些小技巧

Erhu_666的博客 8326

Kubernetes 总结

K8s 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。往期文章: 1、Kubernetes(K8S)集群部署搭建图文教程 2、Kubernetes Pod概念与网络通讯模式 3、Kubernetes 资源清单与Pod生命周期 4、Kubernetes Pod控制器实例演示 5、Kubernetes Service与Ingress详解 6、Kubernetes 存储(Configmap、Secret、Volume、PV-PVC) 7、Kubernetes 集群调度

果子哥丶的博客 826

LinuxCNC开发实战:从安装到EtherCAT配置全解析

本文详细解析LinuxCNC开发实战,从系统安装到EtherCAT总线配置全流程。涵盖实时内核优化、伺服驱动器PDO映射、HAL配置及自定义运动学开发,帮助开发者快速搭建工业级数控系统,提升运动控制精度与稳定性。

rgv234567的博客 353

从零搭建Docker与Kubernetes实战环境:手把手教程与排错指南

最近在帮团队搭建新的微服务环境,发现很多刚接触容器化和云原生的同学,对 Docker 和 Kubernetes (K8S) 的理解还停留在“听说过”的阶段。从安装配置到实际部署应用,中间踩的坑一个接一个,网上资料要么太旧,要么太散,不成体系。 如果你也正面临类似困境——想系统学习容器技术却不知从何下手,或者项目急需落地但被复杂的配置和网络问题卡住——那么这篇文章就是为你准备的。本文将带你从零开始,手把手搭建一套完整的 Docker + K8S 学习与实践环境。内容涵盖从 Linux 基础操作、Docker

weixin_32050773的博客 285

ubuntu linux虚拟机安装部署openclaw详细教程(安装、问题处理)

本文详细介绍了在Ubuntu系统下安装OpenClaw AI助手的完整流程及常见问题解决方案。主要内容包括:1) 通过GIT、Node.js等基础环境配置;2) 使用官方脚本或源码编译两种方式安装OpenClaw;3) 配置向导中的关键选项说明;4) 针对systemctl服务启动失败等常见错误的处理方法。文章特别强调了权限管理、网络依赖和访问配置等易错环节,提供了修改service文件等具体解决方案,帮助开发者顺利完成部署并实现Web UI访问。教程实操性强,适合本地和云服务器环境部署参考。

少说,多做 2032

VSCode 中搭建 Python 开发环境

**验证安装**:打开终端(CMD/PowerShell/终端),输入 `python --version`(Windows)或 `python3 --version`(macOS/Linux),显示版本号即成功。- **下载地址**:[Python 官网](https://www.python.org/downloads/)(选择对应系统的最新稳定版,推荐 3.8+)- **调试**:通过 `launch.json` 配置,设置断点后按 `F5` 启动,使用 `F10/F11` 控制流程。

寒寒豆豆软件公司的博客 2536

资源对象深度解析:Pod生命周期与容器探针、Deployment滚动更新与回滚、StatefulSet有状态应用管理

摘要:本文深入解析Kubernetes三大核心资源对象——Pod、Deployment和StatefulSet的设计原理与实践应用。Pod作为最小调度单元,其生命周期状态机与容器探针机制是保障应用健康的关键;Deployment通过滚动更新和回滚机制实现无状态应用的自动化管理;StatefulSet则为有状态应用提供稳定网络标识、有序部署和持久化存储支持。文章详细剖析了各对象的底层机制,包括探针配置、更新策略、资源管理等,并结合生产案例揭示最佳实践。通过理解这些核心资源对象的协同工作,读者可以构建高可用、可

2401_86478612的博客 1389

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Kubernetes—StatefulSet部署有状态应用详解(二十四)

关注微信公众号:CodingTechWork,一起学习进步。 引言   我们都知道在k8s集群中,Deployment是用来部署无状态的服务,那有状态的服务是用什么资源对象来部署呢?无状态和有状态服务部署的区别是什么?有状态的pod肯定需要独立的存储卷,这样才能保证故障后寻找数据就地恢复原状态,那如何实现多个pod拥有自己独立存储卷?下面我们来看看如何演进方案。 演进 手动创建多个pod   手动创建多个pod,每个pod使用一个独立的持久卷声明,但是需要我们手动管理这些pod,当发生故障后,需要重新手动.

Andya_net的博客 1418

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

k8s之针对有状态服务实现数据持久化

前言 1、什么是有状态服务和无状态服务? 对服务器程序来说,究竟是有状态服务,还是无状态服务,其判断依旧是指两个来自相同发起者的请求在服务器端是否具备上下文关系。如果是状态化请求,那么服务器端一般都要保存请求的相关信息,每个请求可以默认地使用以前的请求信息。而对于无状态请求,服务器端所能够处理的过程必须全部来自于请求所携带的信息,以及其他服务器端自身所保存的、并且可以被所有请求所使用的公共信息。无...

lvjianzhaoa的博客 895

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Kubernetes Pod调度基础

这种多服务实例之间是没有依赖关系,比如 web 应用,在 k8s 控制器中动态启停无状态服务的 pod 并不会对其它的 pod 产生影响。稳定的网络标识:Pod 主机名,DNS 地址不会随着Pod 被重新调度而发生变化,稳定的持久化存储:Pod 被重新调度后,仍然能挂载原有的 PV,从而保证了数据的完整性和一致性。Deployment 被设计用来管理无状态服务的 pod,每个 pod 完全一致无状态服务内的多个 Pod 创建的顺序是没有顺序的。服务不依赖自身的状态,实例的状态数据可以维护在内存中。

zandsw_的博客 1146

Kubernetes StatefulSet 控制器(二十一)

前面我们学习了 Deployment 和 ReplicaSet 两种资源对象得使用,在实际使用的过程中,Deployment 并不能编排所有类型的应用,对无状态服务编排是非常容易的,但是对于有状态服务就无能为力了。我们需要先明白一个概念:什么是有状态服务,什么是无状态服务。 无状态服务(Stateless Service):该服务运行的实例不会在本地存储需要持久化的数据,并且多个实例对于同一个...

非法小恋 934

k8s statefulset controller源码分析

statefulset controller是kube-controller-manager组件中众多控制器中的一个,是 statefulset 资源的控制器,通过对statefulset、pod资源监听,当资源发生变化时会触发 statefulset controller 对相应的statefulset资源对象进行调谐操作,从而完成statefulset对于pod的创建、删除、更新、扩缩容、statefulset的滚动更新、statefulset状态status更新、旧版本statefulset清理等操作

良凯尔的博客 2240

k8s中工作负载

k8s中工作负载和资源对象

m0_60274784的博客 1486

kubernetes资源对象应用类(二)

kubernetes资源对象应用类 Service 的 ClusterIP 地址

xujingcheng123的博客 1256

【k8s】配置文件详解

k8s核心配置文件详解

BugMan的博客 1104
上一篇: 【K8S】Kubernetes 中存储资源相关的API资源对象——PV与PVC
下一篇: 【Linux】ping 命令使用详解
伏游
博客等级 码龄9年 369粉丝 37原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值