当前位置:网站首页>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 nginx
Advantages 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.yaml
Advantages 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: 80
establish
kubectl apply -f node-deployment.yaml
see 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=10
Extension 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=3
Now 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-labels
Choose one of them pod And delete
kubectl delete pod node-deployment-57df45c5bf-d8xst
After 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 yaml
With 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
边栏推荐
- You are using pip version 21.1.1; however, version 22.0.3 is available. You should consider upgradin
- 什么是弱引用?es6中有哪些弱引用数据类型?js中的弱引用是什么?
- Force buckle 1020 Number of enclaves
- MUX VLAN configuration
- Redis-字符串类型
- Folio.ink 免费、快速、易用的图片分享工具
- Unity VR resource flash surface in scene
- What is weak reference? What are the weak reference data types in ES6? What are weak references in JS?
- A picture to understand! Why did the school teach you coding but still not
- ORA-00030
猜你喜欢
随机推荐
Superfluid_ HQ hacked analysis
Blue Bridge Cup embedded stm32g431 - the real topic and code of the eighth provincial competition
PHP error what is an error?
SCM Chinese data distribution
A Cooperative Approach to Particle Swarm Optimization
[understanding of opportunity-39]: Guiguzi - Chapter 5 flying clamp - warning 2: there are six types of praise. Be careful to enjoy praise as fish enjoy bait.
Redis-Key的操作
基于DVWA的文件上传漏洞测试
Win10 add file extension
module ‘tensorflow. contrib. data‘ has no attribute ‘dataset
Leetcode skimming questions_ Sum of squares
How to get all sequences in Oracle database- How can I get all sequences in an Oracle database?
Electrical data | IEEE118 (including wind and solar energy)
Poj2315 football games
Code review concerns
Mongodb problem set
Basic operations of databases and tables ----- default constraints
记一个 @nestjs/typeorm^8.1.4 版本不能获取.env选项问题
How to get the PHP version- How to get the PHP Version?
【SSRF-01】服务器端请求伪造漏洞原理及利用实例