当前位置:网站首页>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 .

125.jpeg


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

image.png

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

image.png


see pods

kubectl get pods --show-labels

image.png


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

image.png

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.

image.png


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

image.png


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

image.png


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

image.png

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

原网站

版权声明
本文为[a_ small_ cherry]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140121509550.html