k8s笔记 | StatefulSet 有状态

2024-04-27 07:20

本文主要是介绍k8s笔记 | StatefulSet 有状态,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

创建一个web.yaml

---
apiVersion: v1
kind: Service
metadata:name: nginxlabels:app: nginx
spec:ports:- port: 80name: webclusterIP: Noneselector:app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: web
spec:serviceName: "nginx" # 使用那个service来管理dnsreplicas: 2selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:latestports: # 容器暴露的端口- containerPort: 80 # 具体暴露的端口号name: web #该端口配置的名字# volumeMounts:#   - name: www #指定加载那个数据券#     mountPath: /usr/share/nginx/html #加载到容器中的那个目录

操作步骤如下:

# 创建
kubectl create sts -f web.yaml
# 查看
kubeclt get sts,svc,po
# 查看ip信息
kubectl run -it --image busybox:1.28.4 dns-test /bin/sh
nslookup web-0.nginx#打印信息如下
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.localName:      web-0.nginx
Address 1: 10.244.107.210 web-0.nginx.default.svc.cluster.local# 扩容,缩容 两种方式,选择其一
kubectl scale statefulset web --replicas=5
kubectl patch statefulset web -p '{"spec":{"replicas":2}}'# 查看描述信息
kubectl descrbe sts web...
Events:Type    Reason            Age    From                    Message----    ------            ----   ----                    -------Normal  SuccessfulCreate  28m    statefulset-controller  create Pod web-0 in StatefulSet web successfulNormal  SuccessfulCreate  27m    statefulset-controller  create Pod web-1 in StatefulSet web successfulNormal  SuccessfulCreate  9m13s  statefulset-controller  create Pod web-2 in StatefulSet web successfulNormal  SuccessfulCreate  8m52s  statefulset-controller  create Pod web-3 in StatefulSet web successfulNormal  SuccessfulCreate  8m32s  statefulset-controller  create Pod web-4 in StatefulSet web successfulNormal  SuccessfulDelete  6m28s  statefulset-controller  delete Pod web-4 in StatefulSet web successfulNormal  SuccessfulDelete  6m25s  statefulset-controller  delete Pod web-3 in StatefulSet web successfulNormal  SuccessfulDelete  6m23s  statefulset-controller  delete Pod web-2 in StatefulSet web successful

镜像更新

kubectl patch sts web --type='json' -p='[{"op":"replace","path":"/spec/template/spec/containers/0/image","value":"nginx:latest"}]'# 这里有可能报错,那就把  "nginx:1.9.1" 改为 "nginx:1.26" 请注意到hub.docker.net去查看对应的版本

查看更新记录

# 查看所有
kubectl rollout history sts web# 结果
statefulset.apps/web 
REVISION  CHANGE-CAUSE
1         <none>
2         <none># 指定查看对应的版本 
kubectl rollout history sts web --revision=2# 结果
statefulset.apps/web with revision #2
Pod Template:Labels:       app=nginxContainers:nginx:Image:      nginx:1.9.1Port:       80/TCPHost Port:  0/TCPEnvironment:        <none>Mounts:     <none>Volumes:      <none># 查看状态
kubectl rollout status sts web

灰度发布

利用滚动更新中的partition 属性,可以实现简易的灰度发布效果

简介:加入我们有5个pod,如果当partition设置为3,那么此时滚动更新是,只会更新需要>=3的pod,利用该机制,我们可以通过控制partion来决定更新那一部分的内容,确定没有问题后,在逐渐增大更新pod的数量;如果partition为0 ,那表示所有的都更新

# 修改sts配置文件
kubectl edit sts web# 修改partition:3  和 nignx:latest 
# 保存退出,通过kubectl describe po web-4  和 web-0 就能看到效果

StatefulSet的删除

# 练级删除 会删除sts和podkubectl delete sts web# 非联级删除
kubectl delete sts web --cascade=false# 删除services
kubectl delete svc nginx

这篇关于k8s笔记 | StatefulSet 有状态的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

Linux之进程状态&&进程优先级详解

《Linux之进程状态&&进程优先级详解》文章介绍了操作系统中进程的状态,包括运行状态、阻塞状态和挂起状态,并详细解释了Linux下进程的具体状态及其管理,此外,文章还讨论了进程的优先级、查看和修改进... 目录一、操作系统的进程状态1.1运行状态1.2阻塞状态1.3挂起二、linux下具体的状态三、进程的

k8s部署MongDB全过程

《k8s部署MongDB全过程》文章介绍了如何在Kubernetes集群中部署MongoDB,包括环境准备、创建Secret、创建服务和Deployment,并通过Robo3T工具测试连接... 目录一、环境准备1.1 环境说明1.2 创建 namespace1.3 创建mongdb账号/密码二、创建Sec

centos7基于keepalived+nginx部署k8s1.26.0高可用集群

《centos7基于keepalived+nginx部署k8s1.26.0高可用集群》Kubernetes是一个开源的容器编排平台,用于自动化地部署、扩展和管理容器化应用程序,在生产环境中,为了确保集... 目录一、初始化(所有节点都执行)二、安装containerd(所有节点都执行)三、安装docker-

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

hdu1565(状态压缩)

本人第一道ac的状态压缩dp,这题的数据非常水,很容易过 题意:在n*n的矩阵中选数字使得不存在任意两个数字相邻,求最大值 解题思路: 一、因为在1<<20中有很多状态是无效的,所以第一步是选择有效状态,存到cnt[]数组中 二、dp[i][j]表示到第i行的状态cnt[j]所能得到的最大值,状态转移方程dp[i][j] = max(dp[i][j],dp[i-1][k]) ,其中k满足c

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

90、k8s之secret+configMap

一、secret配置管理 配置管理: 加密配置:保存密码,token,其他敏感信息的k8s资源 应用配置:我们需要定制化的给应用进行配置,我们需要把定制好的配置文件同步到pod当中容器 1.1、加密配置: secret: [root@master01 ~]# kubectl get secrets ##查看加密配置[root@master01 ~]# kubectl get se