当前位置:网站首页>How does kubernetes support stateful applications through statefulset? (07)
How does kubernetes support stateful applications through statefulset? (07)
2022-07-06 20:17:00 【wzlinux】
We learned Kubernetes Stateless workload in , And put it into practice Deployment object , I believe now you have gradually fallen in love with Kubernetes 了 .
So this class , Let's have a look at Kubernetes Another workload in StatefulSet. You can tell by the name , This workload is mainly used for stateful service publishing . About stateful services and stateless Services , You can refer to the previous chapter .
Let's gradually understand from a specific example 、 know StatefulSet. stay kubectl Command line , We usually StatefulSet Shorthand for sts. Deploying a StatefulSet When , There is a pre dependent object , namely Headless Services. This object is StatefulSet The role of , We will come together in the following . in addition , Detailed introduction and other functions of this object , We will explain it separately in later courses . Here it is , You can skip it for a while Service Perception . Let's first look at the following Headless Services:
The above paragraph yaml It means , stay demo In this namespace , Create a file called nginx-demo Service for , This service is exposed 80 port , You can access with app=nginx
This label Of Pod.
Now let's use the above paragraph yaml Create a in the cluster Service:
Create the pre dependent Service, Now we can start to create real StatefulSet object , Refer to the following yaml file :
You can see , I have named it web-demo Of StatefulSet Deployment is complete .
Now let's explore a little StatefulSet The secret of , See what features it has , Why can we guarantee the stateful operation of services .
StatefulSet Characteristics of
adopt kubectl Of watch function ( Add parameters to the command line -w
), We can observe that Pod The state changes step by step .
adopt StatefulSet created Pod Names have certain rules , namely $(statefulset name )-$( Serial number )
, For example, in this example web-demo-0、web-demo-1.
There is another interesting point here ,web-demo-0 This Pod Than web-demo-1 Priority creation , And in web-demo-0 Turn into Running After the State , Was created . To prove this conjecture , We observe in a terminal window StatefulSet Of Pod:
Let's open another terminal port watch This namespace Medium event:
Now we try to change this StatefulSet Number of copies , Change it to 5:
At this time, we observe the output of the other two terminal ports :
We see again StatefulSet Managed Pod according to 2、3、4 Create in order , The name is regular , Pass the following section Deployment Created randomly Pod Names are very different .
By observing the corresponding event Information , It can also confirm our conjecture again .
Now let's try to shrink the volume :
At this time, observe the other two terminal windows , They are as follows :
You can see , At the time of volume reduction ,StatefulSet The associated Pod Press 4、3、2 Delete in order .
so , For a possession N Copies of StatefulSet Come on ,Pod When deploying, follow {0 …… N-1} Created in sequence number order , When deleting, delete one by one in reverse order , This is the first feature I want to talk about .
Then let's see ,StatefulSet created Pod Have fixed 、 And the exact host name , such as :
Let's look at the top StatefulSet Of API Object definitions , Have you found anything similar to that in our last section Deployment The definition of is very similar , The main difference is spec.serviceName
This field . It is very important ,StatefulSet According to this field , For each Pod Create a DNS domain name , This The format of the domain name by $(podname).(headless service name)
, Let's take a look at it through examples .
At present Pod and IP The corresponding relationship between them is as follows :
Pod web-demo-0 Of IP The address is 10.244.0.39,web-demo-1 Of IP The address is 10.244.0.40. Here we go through kubectl run
In the same namespace demo
Create a name in dns-test Of Pod, meanwhile attach Into the container , Be similar to docker run -it --rm
This command .
We run in containers nslookup To query their internal DNS Address , As shown below :
You can see , Every Pod There is a corresponding A Record .
Let's delete these now Pod, See what's going to change :
After deleting successfully , You can find StatefulSet A new Pod, however Pod The name remains unchanged . The only change is IP It has changed .
Let's see DNS Record :
It can be seen that ,DNS On record Pod The domain name of has not changed , only IP The address has changed . So when Pod The node where it is located fails, resulting in Pod Drift to other nodes , perhaps Pod Deleted and rebuilt due to failure ,Pod Of IP Will change , however Pod There will be no change in your domain name , That means Services can pass through constant Pod Domain name to ensure the stability of communication , Instead of relying on Pod IP.
With spec.serviceName
This field , To ensure the StatefulSet The associated Pod Can have a stable network identity , namely Pod The serial number of 、 Host name 、DNS Record name, etc .
The last thing I want to say is , For stateful Services , Each copy will use persistent storage , And the data used are different .
StatefulSet adopt PersistentVolumeClaim(PVC) Can guarantee Pod The one-to-one corresponding binding relationship between storage volumes . meanwhile , Delete StatefulSet The associated Pod when , Will not delete its associated PVC.
We will introduce it in the following chapters of network storage , Skip again .
How to update StatefulSet
that , If you want to talk to a StatefulSet upgrade , What to do ?
stay StatefulSet in , Two update and upgrade strategies are supported , namely RollingUpdate and OnDelete.
RollingUpdate Strategy is Default update strategy . Can achieve Pod Rolling upgrade , Follow us in the last lesson Deployment To introduce the RollingUpdate The strategy is the same . For example, we did the image update operation at this time , Then the whole upgrade process is roughly as follows , Delete all in reverse order first Pod, Then create new images in turn Pod come out . Here you can go through kubectl get pod -n demo -w -l app=nginx
Come and watch .
Use at the same time RollingUpdate The update strategy also supports partition Parameter to update a segment StatefulSet. All serial numbers are greater than or equal to partition Of Pod Will be updated . You can also update manually here StatefulSet Configuration to experiment .
When you set the update policy to OnDelete when , We have to delete it manually first Pod, To trigger a new Pod to update .
Last
Now let's summarize StatefulSet Characteristics :
- Have fixed network marks , For example, host name , Domain name etc. ;
- Support persistent storage , And it's better to bind with instances one by one ;
- You can deploy and expand in order ;
- You can terminate and delete in order ;
- During rolling upgrade , It will also follow a certain order .
With the help of StatefulSet These capabilities of , We can deploy some stateful Services , such as MySQL、ZooKeeper、MongoDB etc. . You can follow this course stay Kubernetes Build a ZooKeeper colony .
Welcome to scan the code to pay attention to , For more information
边栏推荐
- Tencent byte and other big companies interview real questions summary, Netease architects in-depth explanation of Android Development
- Social recruitment interview experience, 2022 latest Android high-frequency selected interview questions sharing
- 【Yann LeCun点赞B站UP主使用Minecraft制作的红石神经网络】
- Method keywords deprecated, externalprocname, final, forcegenerate
- Tencent T4 architect, Android interview Foundation
- 棋盘左上角到右下角方案数(2)
- Anaconda安裝後Jupyter launch 沒反應&網頁打開運行沒執行
- 某东短信登录复活 安装部署教程
- Cesium Click to draw a circle (dynamically draw a circle)
- Unity makes AB package
猜你喜欢
01 基础入门-概念名词
Tencent T3 Daniel will teach you hand-in-hand, the internal information of the factory
Selenium advanced operations
BeagleBoneBlack 上手记
Tencent T3 teaches you hand in hand. It's really delicious
Pay attention to the partners on the recruitment website of fishing! The monitoring system may have set you as "high risk of leaving"
BUUCTF---Reverse---easyre
PowerPivot——DAX(初识)
Deep learning classification network -- zfnet
Tencent Android development interview, basic knowledge of Android Development
随机推荐
Tencent byte Alibaba Xiaomi jd.com offer got a soft hand, and the teacher said it was great
Cesium 两点之间的直线距离
[cloud native and 5g] micro services support 5g core network
An East SMS login resurrection installation and deployment tutorial
Crawler (14) - scrape redis distributed crawler (1) | detailed explanation
Initial experience of addresssanitizer Technology
Groovy基础语法整理
报错分析~csdn反弹shell报错
Speech recognition (ASR) paper selection: talcs: an open source Mandarin English code switching corps and a speech
Monthly report of speech synthesis (TTS) and speech recognition (ASR) papers in June 2022
beegfs高可用模式探讨
小微企业难做账?智能代账小工具快用起来
Special topic of rotor position estimation of permanent magnet synchronous motor -- Summary of position estimation of fundamental wave model
Cesium 点击绘制圆形(动态绘制圆形)
In unity space, an object moves around a fixed point on the sphere at a fixed speed
Finally, there is no need to change a line of code! Shardingsphere native driver comes out
Tips for web development: skillfully use ThreadLocal to avoid layer by layer value transmission
5. Nano - Net in wireless body: Top 10 "is it possible?" Questions
2022年6月语音合成(TTS)和语音识别(ASR)论文月报
Tencent T3 Daniel will teach you hand-in-hand, the internal information of the factory