当前位置:网站首页>Kubernetes stateless application expansion and contraction capacity
Kubernetes stateless application expansion and contraction capacity
2022-07-06 01:34:00 【a_ small_ cherry】
brief introduction : Before , We have learned how to deploy applications from the command line , In this article, we learn how to pass yaml Configuration file for application deployment , And expand and shrink the applied capacity .

Image download 、 Domain name resolution 、 Time synchronization please click Alibaba open source mirror site
Kubernetes object
This paragraph is for reference kubernetes The official manual Learning notes of , It is suggested to have a preliminary understanding , If you have understood relevant concepts , This paragraph can be skipped , Look directly at the following operations .
Kubernetes object Is a persistent entity .Kubernetes Use these entities to represent the state of the entire cluster .
The following information is described :
- Which containerization applications are running ( And where Node On )
- Resources that can be used by applications
- Strategies for application runtime performance , For example, restart strategy 、 Upgrade strategy , And fault tolerance strategy
Once the object is created ,k8s The cluster will start to work continuously to ensure that the object conforms to the desired state .
Object specification (Spec) And state (Status)
Every Kubernetes Object contains two nested object fields , They are responsible for managing the configuration of objects : object spec and object status . spec It's necessary , It describes the Expected state (Desired State) —— The characteristics of the desired object . status Describes the The actual state (Actual State) , It is from Kubernetes Provided and updated by the system . At any moment ,Kubernetes The control surface has been trying to manage the actual state of the object to match the expected state .
describe Kubernetes object
In general use yaml To describe a k8s object ,yaml It is a language specially used to write configuration .
The basic rules of grammar are as follows :
- Case sensitive
- Use indentation to indicate hierarchy
- Indenting is not allowed tab, Only spaces are allowed
- The number of indented spaces doesn't matter , Just align the elements at the same level to the left
- '#' Notation
Use yaml describe k8s object , The following required fields are required :
- apiVersion - The... Used to create the object Kubernetes API Version of
- kind - The type of object you want to create
- metadata - Data that helps identify object uniqueness , Including a name character string 、UID And optional namespace
- spec - Describes the Expected state (Desired State),k8s The cluster will continue to ensure that objects conform to the described state .
management Kubernetes object
management k8s There are three ways to object

Imperative command (Imperative commands)
This is the way we used above , Operate directly on the command line .
Such as :
kubectl create deployment nginx --image nginxAdvantages over object configuration :
- The order is simple , Easy to learn and easy to remember .
- The command changes the cluster in one step .
Disadvantages compared to object configuration :
- Commands are not integrated with the change review process .
- Command does not provide an audit trail associated with the change .
- In addition to real-time content , The command does not provide a record source .
- The command does not provide a template for creating new objects .
Imperative object configuration (Imperative object configuration)
Operation instructions and configuration files are required .
Such as :
kubectl create -f nginx.yamlAdvantages over imperative commands :
- Object configurations can be stored in the source control system , such as Git.
- Object configuration can be integrated with process , For example, checking for updates before pushing and auditing .
- Object configuration provides a template for creating new objects .
Disadvantages compared with imperative commands :
- Object configuration requires a basic understanding of object architecture .
- Object configuration requires extra steps to write YAML file .
Advantages over declarative object configuration :
- Imperative object configuration behavior is easier to understand .
- from Kubernetes 1.5 Version start , Imperative object configuration is more mature .
Disadvantages compared to declarative object configuration :
- Imperative object configuration is more suitable for files , Rather than a directory .
- Updates to active objects must be reflected in the configuration file , Otherwise, it will be lost in the next replacement .
Declarative object configuration (Declarative object configuration)
Configure with declarative objects , Specified actions that do not need to be displayed in the command , In this way, you can put the configuration file in the directory , Perform different operations on the files in the directory .
such as :
kubectl apply -f configs/Advantages over imperative object configuration :
- Changes made to the active object, even if not incorporated into the configuration file , It will be preserved .
- Declarative object configuration better supports operations on directories and automatically detects the operation type of each file ( establish , repair , Delete ).
Disadvantages compared with imperative object configuration :
- Declarative object configuration is difficult to debug and the result is difficult to understand when an exception occurs .
- Use diff The resulting partial updates create complex merge and patch operations .
Practical operation
establish Deployment
establish node-deployment.yaml file
apiVersion: apps/v1
kind: Deployment
metadata:
name: node-deployment
labels:
app: node
spec:
replicas: 3
selector:
matchLabels:
app: node
template:
metadata:
labels:
app: node
spec:
containers:
- name: node
image: registry.cn-hangzhou.aliyuncs.com/larswang/hello-node:1.0
ports:
- containerPort: 80establish
kubectl apply -f node-deployment.yamlsee deployments
kubectl get deployments
see pods
kubectl get pods --show-labels
The zoom Deployment
Expand to ten copies
kubectl scale deployment.v1.apps/node-deployment --replicas=10Extension complete view deployments and pods situation
kubectl get deployments
kubectl get pods --show-labels
Shrink to three copies
kubectl scale deployment.v1.apps/node-deployment --replicas=3Now you can see that among 7 individual pod be in Terminating state . After a while , Look again , There's only... Left 3 Are running Of pod.

Automatic recovery
To look at first pods list
kubectl get pods --show-labelsChoose one of them pod And delete
kubectl delete pod node-deployment-57df45c5bf-d8xstAfter the deletion is successful , Look again pods list
kubectl get pods --show-labels
You will find deleted pod No longer exists , however Deployment Created a new pod.
This is it. k8s It will always try to ensure that the running state of the cluster is consistent with the state described in the configuration .
obtain Deployment Description information
kubectl describe deployment node-deployment
You can see Deployment Current description of , And pod Historical changes .
NewReplicaSet:
- When you first create Deployment when , It creates a ReplicaSet (node-deployment-57df45c5bf) And created 3 Copies .
Events:
- First, expand the capacity to 10 individual pods
- It's shrunk 3 individual pods
- It's shrunk 1 individual pods
- It's expanded to 3 individual pods
see Deployment state
kubectl get deployment node-deployment -o yamlWith yaml Format display Deployment Configuration and current status of

summary
In this article, we introduce what is k8s object , And the use of yaml To configure , Created a Deployment.
adopt scale Yes Deployment Zoom , And demonstrates the manual deletion of a pod after ,k8s Keep the running state consistent with the description according to the description .
After the operation , Look back at the concept , There's a kind of Epiphany .
In this paper, from :Kubernetes Stateless application expansion and contraction - Alicloud developer community
边栏推荐
- Code Review关注点
- 网易智企逆势进场,游戏工业化有了新可能
- Redis守护进程无法停止解决方案
- [solved] how to generate a beautiful static document description page
- Leetcode sword finger offer 59 - ii Maximum value of queue
- 基於DVWA的文件上傳漏洞測試
- 3D vision - 4 Getting started with gesture recognition - using mediapipe includes single frame and real time video
- Accelerating spark data access with alluxio in kubernetes
- 一圖看懂!為什麼學校教了你Coding但還是不會的原因...
- Blue Bridge Cup embedded stm32g431 - the real topic and code of the eighth provincial competition
猜你喜欢

Alibaba-Canal使用详解(排坑版)_MySQL与ES数据同步

Superfluid_ HQ hacked analysis

UE4 unreal engine, editor basic application, usage skills (IV)

National intangible cultural heritage inheritor HD Wang's shadow digital collection of "Four Beauties" made an amazing debut!

About error 2003 (HY000): can't connect to MySQL server on 'localhost' (10061)

A picture to understand! Why did the school teach you coding but still not

3D model format summary
Folio.ink 免费、快速、易用的图片分享工具

Leetcode skimming questions_ Verify palindrome string II

Threedposetracker project resolution
随机推荐
记一个 @nestjs/typeorm^8.1.4 版本不能获取.env选项问题
internship:项目代码所涉及陌生注解及其作用
WGet: command line download tool
Leetcode skimming questions_ Sum of squares
XSS learning XSS lab problem solution
NLP第四范式:Prompt概述【Pre-train,Prompt(提示),Predict】【刘鹏飞】
伦敦银走势中的假突破
Loop structure of program (for loop)
Basic operations of databases and tables ----- primary key constraints
基於DVWA的文件上傳漏洞測試
PHP error what is an error?
A Cooperative Approach to Particle Swarm Optimization
Threedposetracker project resolution
yii中console方法调用,yii console定时任务
【已解决】如何生成漂亮的静态文档说明页
Leetcode 剑指 Offer 59 - II. 队列的最大值
Yii console method call, Yii console scheduled task
037 PHP login, registration, message, personal Center Design
How does Huawei enable debug and how to make an image port
Accelerating spark data access with alluxio in kubernetes