kubernetes系列教程(十一)深入學(xué)習(xí)Deployment控制器

視頻教程連接kubernetes快速入門


寫在前面

前面的文章我們深入介紹了Pod的使用移剪,包括Pod定義简识,Pod資源管理和服務(wù)質(zhì)量Pod健康檢查舍咖,Pod存儲管理Pod調(diào)度劳跃,當(dāng)Pod所在的node異常時谎仲,Pod無法自動恢復(fù),因此Pod很少單獨使用刨仑,一般以template的形式嵌套在控制器中使用郑诺,下來介紹kubernetes系列教程副本控制器Deployment,ReplicaSet杉武,ReplicationController的使用辙诞。

1. 深入學(xué)習(xí)控制器

1.1 控制器概述

Pod是kubernetes所有運行應(yīng)用或部署服務(wù)的基礎(chǔ),可以看作是k8s中運行的機器人轻抱,應(yīng)用單獨運行在Pod中不具備高級的特性飞涂,比如節(jié)點故障時Pod無法自動遷移,Pod多副本橫向擴(kuò)展祈搜,應(yīng)用滾動升級RollingUpdate等较店,因此Pod一般不會單獨使用,需要使用控制器來實現(xiàn)容燕。

我們先看一個概念ReplicationController副本控制器梁呈,簡稱RC,副本控制是實現(xiàn)Pod高可用的基礎(chǔ)蘸秘,其通過定義副本的副本數(shù)replicas官卡,當(dāng)運行的Pod數(shù)量少于replicas時RC會自動創(chuàng)建Pod蝗茁,當(dāng)Pod數(shù)量多于replicas時RC會自動刪除多余的Pod,確保當(dāng)前運行的Pod和RC定義的副本數(shù)保持一致寻咒。

副本控制器包括Deployment哮翘,ReplicaSet,ReplicationController毛秘,StatefulSet等饭寺。其中常用有兩個:Deployment和StatefulSet,Deployment用于無狀態(tài)服務(wù)熔脂,StatefulSet用于有狀態(tài)服務(wù)佩研,ReplicaSet作為Deployment后端副本控制器柑肴,ReplicationController則是舊使用的副本控制器霞揉。

為了實現(xiàn)不同的功能,kubernetes中提供多種不同的控制器滿足不同的業(yè)務(wù)場景晰骑,可以分為四類:

  • Stateless application無狀態(tài)化應(yīng)用适秩,如Deployment,ReplicaSet硕舆,RC等秽荞;
  • Stateful application有狀態(tài)化應(yīng)用,需要保存數(shù)據(jù)狀態(tài)抚官,如數(shù)據(jù)庫扬跋,數(shù)據(jù)庫集群;
  • Node daemon節(jié)點支撐守護(hù)凌节,適用于在所有或部分節(jié)點運行Daemon钦听,如日志,監(jiān)控采集倍奢;
  • Batch批處理任務(wù)朴上,非長期運行服務(wù),分為一次性運行Job和計劃運行CronJob兩種卒煞。

本文我們主要介紹無狀態(tài)服務(wù)副本控制器的使用痪宰,包括Deployment,ReplicaSet和ReplicationController畔裕。

1.2 Deployment

Deployment是實現(xiàn)無狀態(tài)應(yīng)用副本控制器衣撬,其通過declarative申明式的方式定義Pod的副本數(shù),Deployment的副本機制是通過ReplicaSet實現(xiàn)扮饶,replicas副本的管理通過在ReplicaSet中添加和刪除Pod具练,RollingUpdate通過新建ReplicaSet,然后逐步移除和添加ReplicaSet中的Pod數(shù)量贴届,從而實現(xiàn)滾動更新靠粪,使用Deployment的場景如下:

  • 滾動升級RollingUpdate蜡吧,后臺通過ReplicaSet實現(xiàn)
  • 多副本replicas實現(xiàn),增加副本(高負(fù)載)或減少副本(低負(fù)載)
  • 應(yīng)用回滾Rollout占键,版本更新支持回退

1.2.1 Deployment定義

  1. 我們定義一個Deployment昔善,副本數(shù)為3,Pod以模版Template的形式封裝在Deployment中畔乙,為了結(jié)合之前Pod學(xué)習(xí)內(nèi)容君仆,我們增加了resource和健康檢查的定義,具體實現(xiàn)參考前面介紹的文章牲距。
[root@node-1 happylau]# cat deployment-demo.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:            #Deployment的元數(shù)據(jù)信息返咱,包含名字,標(biāo)簽
  name: deployment-nginx-demo
  labels:
    app: nginx
    rc: deployment
  annotations:
    kubernetes.io/replicationcontroller: Deployment
    kubernetes.io/description: "ReplicationController Deployment Demo"
spec:
  replicas: 3          #副本數(shù)量牍鞠,包含有3個Pod副本
  selector:            #標(biāo)簽選擇器咖摹,選擇管理包含指定標(biāo)簽的Pod
    matchLabels:
      app: nginx
      rc: deployment
  template:       #如下是Pod的模板定義,沒有apiVersion难述,Kind屬性萤晴,需包含metadata定義
    metadata:          #Pod的元數(shù)據(jù)信息,必須包含有l(wèi)abels
      labels:
        app: nginx
        rc: deployment 
    spec:              #spec指定容器的屬性信息
      containers:
      - name: nginx-deployment
        image: nginx:1.7.9
        imagePullPolicy: IfNotPresent
        ports:          #容器端口信息
        - name: http-80-port
          protocol: TCP
          containerPort: 80
        resources:      #資源管理,requests請求資源胁后,limits限制資源
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 200m
            memory: 256Mi
        livenessProbe:  #健康檢查器livenessProbe店读,存活檢查
          httpGet:
            path: /index.html
            port: 80
            scheme: HTTP
          initialDelaySeconds: 3
          periodSeconds: 5
          timeoutSeconds: 2
        readinessProbe:  #健康檢查器readinessProbe,就緒檢查
          httpGet:
            path: /index.html
            port: 80
            scheme: HTTP
          initialDelaySeconds: 3
          periodSeconds: 5
          timeoutSeconds: 2

Deployment字段說明:

  • deployment基本屬性攀芯,包括apiVersion,Kind,metadata和spec屯断,其中,deployment.metdata指定名稱和標(biāo)簽內(nèi)容侣诺,deployment.spec指定部署組的屬性信息殖演;
  • deployment屬性信息包含有replicas,Selector和template紧武,其中replicas指定副本數(shù)目剃氧,Selector指定管理的Pod標(biāo)簽,template為定義Pod的模板阻星,Deployment通過模板創(chuàng)建Pod朋鞍;
  • deployment.spec.template為Pod定義的模板,和Pod定義不太一樣妥箕,template中不包含apiVersion和Kind屬性滥酥,要求必須有metadata,deployment.spec.template.spec為容器的屬性信息畦幢,其他定義內(nèi)容和Pod一致坎吻。
  1. 生成Deployment,創(chuàng)建時加一個--record參數(shù),會在annotation中記錄deployment.kubernetes.io/revision版本
[root@node-1 happylau]# kubectl apply -f deployment-demo.yaml --record
deployment.apps/deployment-nginx-demo created
  1. 查看Deployment列表宇葱,運行時自動下載鏡像瘦真,如下已運行了3個副本
[root@node-1 happylau]# kubectl get deployments deployment-nginx-demo 
NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
deployment-nginx-demo   3/3     3            3           2m37s

NAME代表名稱,metadata.name字段定義
READY代表Pod的健康狀態(tài)刊头,前面值是readiness,后面是liveness
UP-TO-DATE代表更新诸尽,用于滾動升級
AVAILABLE代表可用
AGE創(chuàng)建至今運行的時長
  1. 查看Deployment的詳情原杂,可以看到Deployment通過一個deployment-nginx-demo-866bb6cf78 replicaset副本控制器控制Pod的副本數(shù)量
Deployment詳情信息
  1. 查看replicaset的詳情信息,通過Events可查看到deployment-nginx-demo-866bb6cf78創(chuàng)建了三個Pod
ReplicaSet詳情信息
  1. 查看Pod詳情您机,最終通過Pod定義的模版創(chuàng)建container萌衬,資源定義卵沉,健康檢查等包含在Pod定義的模版中
Pod詳情信息

通過上面的實戰(zhàn)演練我們可得知Deployment的副本控制功能是由replicaset實現(xiàn)颖变,replicaset生成Deployment中定義的replicas副本的數(shù)量盖高,即創(chuàng)建多個副本,如下圖所示:

Deployment創(chuàng)建結(jié)構(gòu)示意圖

1.2.2 Deployment擴(kuò)容

當(dāng)業(yè)務(wù)比較繁忙時可以通過增加副本數(shù)仲闽,增加副本數(shù)是通過yaml文件中的replicas控制的脑溢,當(dāng)設(shè)置了replias后,Deployment控制器會自動根據(jù)當(dāng)前副本數(shù)目創(chuàng)建所需的Pod數(shù)蔼囊,這些pod會自動加入到service中實現(xiàn)負(fù)載均衡焚志,相反減少副本數(shù)衣迷,這些pod會自動從service中刪除畏鼓。

Deployment擴(kuò)容
  1. 將deployment的副本數(shù)擴(kuò)容至4個,可通過修改yaml文件的replicas個數(shù)或者通過scale命令擴(kuò)展壶谒。
[root@node-1 ~]# kubectl scale --replicas=4 deployment deployment-nginx-demo 
deployment.extensions/deployment-nginx-demo scaled
  1. 查看Deployment副本數(shù)量,已增加至4個副本
[root@node-1 ~]# kubectl get deployments
NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
deployment-nginx-demo   4/4     4            4           77m
  1. 副本的擴(kuò)容是如何實現(xiàn)的呢云矫?我們查看replicaset的詳情信息觀察,增加副本的個數(shù)是通過replicaset來擴(kuò)容汗菜,通過模版復(fù)制新的Pod
Deployment擴(kuò)展
  1. 副本縮容
[root@node-1 ~]# kubectl scale --replicas=2 deployment deployment-nginx-demo 
deployment.extensions/deployment-nginx-demo scaled

[root@node-1 ~]# kubectl get deployments deployment-nginx-demo 
NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
deployment-nginx-demo   2/2     2            2           7h41m
Deployment減少副本

通過上面的操作演練我們可以得知:Deployment的擴(kuò)容是通過ReplicaSet的模版創(chuàng)建Pod或刪除Pod實現(xiàn)让禀,scale是手動擴(kuò)展實現(xiàn)副本的機制,kubernetes還提供了另外一種副本自動擴(kuò)容機制horizontalpodautoscalers(Horizontal Pod Autoscaling),即通過定義CPU的利用率實現(xiàn)自動的橫向擴(kuò)展陨界,由于需要依賴于監(jiān)控組件巡揍,后續(xù)我們再做介紹。

1.2.3 滾動更新

Deployment支持滾動更新菌瘪,默認(rèn)創(chuàng)建Deployment后會增加滾動更新的策略腮敌,通過逐步替代replicas中的pod實現(xiàn)更新無服務(wù)中斷(需要結(jié)合service),如下圖所示:將一個deployment副本數(shù)為3的應(yīng)用更新俏扩,先更新10.0.0.6 pod糜工,更新pod應(yīng)用,替換新的ip录淡,然后加入到service中捌木,以此類推再繼續(xù)更新其他pod,從而實現(xiàn)滾動更新嫉戚,不影響服務(wù)的升級刨裆。

滾動更新

通過類型為:RollingUpdate澈圈,每次更新最大的數(shù)量maxSurge是replicas總數(shù)的25%,最大不可用的數(shù)量maxUnavailable為25%,如下是通過kubectl get deployments deployment-nginx-demo -o yaml查看滾動更新相關(guān)的策略帆啃。

spec:
  progressDeadlineSeconds: 600
  replicas: 3
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: nginx
      rc: deployment
  strategy:  #strategy定義的是升級的策略极舔,類型為RollingUpdate
    rollingUpdate: 
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  1. 滾動更新是當(dāng)pod.template中定義的相關(guān)屬性變化,如下將鏡像更新到1.9.1链瓦,通過--record會記錄操作命令
[root@node-1 ~]# kubectl set image deployments deployment-nginx-demo nginx-deployment=nginx:1.9.1 --record
deployment.extensions/deployment-nginx-demo image updated
  1. 查看滾動升級的狀態(tài)(由于第一次nginx的鏡像寫錯了拆魏,容器下載鏡像失敗,寫成nignx慈俯,導(dǎo)致修改后有兩次record)
[root@node-1 happylau]# kubectl rollout status deployment deployment-nginx-demo 
deployment "deployment-nginx-demo" successfully rolled out

查看滾動升級版本渤刃,REVSISION代表版本號:
[root@node-1 happylau]# kubectl rollout history deployment deployment-nginx-demo 
deployment.extensions/deployment-nginx-demo 
REVISION  CHANGE-CAUSE
1         <none>
2         kubectl set image deployments deployment-nginx-demo nginx-deployment=nignx:1.9.1 --record=true
3         kubectl set image deployments deployment-nginx-demo nginx-deployment=nignx:1.9.1 --record=true
  1. 觀察Deployment的升級過程,新創(chuàng)建一個RS deployment-nginx-demo-65c8c98c7b贴膘,逐漸將舊RS中的pod替換卖子,直至舊的RS deployment-nginx-demo-866bb6cf78上的副本數(shù)為0.
滾動升級原理
  1. 查看RS的列表,可以看到新的RS的副本數(shù)為2刑峡,其他RS副本數(shù)為0
[root@node-1 ~]# kubectl get replicasets 
NAME                               DESIRED   CURRENT   READY   AGE
deployment-nginx-demo-65c8c98c7b   2         2         2       21m  #新的RS洋闽,REVSION為3
deployment-nginx-demo-6cb65f58c6   0         0         0       22m  #鏡像寫錯的RS,REVISON為2
deployment-nginx-demo-866bb6cf78   0         0         0       40m  #舊的RS突梦,對應(yīng)REVSION為1
  1. 測試版本升級是否成功
[root@node-1 ~]# kubectl get pods -o wide 
NAME                                     READY   STATUS    RESTARTS   AGE   IP            NODE     NOMINATED NODE   READINESS GATES
deployment-nginx-demo-65c8c98c7b-bzql9   1/1     Running   0          25m   10.244.1.58   node-2   <none>           <none>
deployment-nginx-demo-65c8c98c7b-vrjhp   1/1     Running   0          25m   10.244.2.72   node-3   <none>           <none>
[root@node-1 ~]# curl -I http://10.244.2.72 
HTTP/1.1 200 OK
Server: nginx/1.9.1 #鏡像的版本成功更新
Date: Mon, 28 Oct 2019 15:28:49 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 26 May 2015 15:02:09 GMT
Connection: keep-alive
ETag: "55648af1-264"
Accept-Ranges: bytes

1.2.4 版本回退

如果版本不符合預(yù)期诫舅,kubernetes提供回退的功能,和滾動更新一樣宫患,回退的功能Deployment將替換到原始的RS上刊懈,即逐步將Pod的副本替換到舊的RS上.

  1. 執(zhí)行回滾,回退到REVISON版本為1
[root@node-1 ~]# kubectl rollout undo deployment deployment-nginx-demo --to-revision=1
deployment.extensions/deployment-nginx-demo rolled back
  1. 查看Deployment的回退狀態(tài)和歷史版本
[root@node-1 ~]# kubectl rollout status deployment deployment-nginx-demo 
deployment "deployment-nginx-demo" successfully rolled out

[root@node-1 ~]# kubectl rollout history deployment deployment-nginx-demo 
deployment.extensions/deployment-nginx-demo 
REVISION  CHANGE-CAUSE
2         kubectl set image deployments deployment-nginx-demo nginx-deployment=nignx:1.9.1 --record=true
3         kubectl set image deployments deployment-nginx-demo nginx-deployment=nignx:1.9.1 --record=true
4         <none>
  1. 查看Deployment的詳情娃闲,可以看到RS已經(jīng)會退到原始的RS了
版本回退
  1. 測試nginx的版本
[root@node-1 ~]# kubectl get pods -o wide 
NAME                                     READY   STATUS    RESTARTS   AGE     IP            NODE     NOMINATED NODE   READINESS GATES
deployment-nginx-demo-866bb6cf78-9thtn   1/1     Running   0          3m42s   10.244.1.59   node-2   <none>           <none>
deployment-nginx-demo-866bb6cf78-ws2hx   1/1     Running   0          3m48s   10.244.2.73   node-3   <none>           <none>


#測試版本
[root@node-1 ~]# curl -I http://10.244.1.59 
HTTP/1.1 200 OK
Server: nginx/1.7.9 #回退到1.7.9版本
Date: Mon, 28 Oct 2019 15:36:07 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 23 Dec 2014 16:25:09 GMT
Connection: keep-alive
ETag: "54999765-264"
Accept-Ranges: bytes

小結(jié):通過上面的操作演練可知虚汛,Deployment是通過ReplicaSet實現(xiàn)Pod副本數(shù)的管理(擴(kuò)容或減少副本數(shù)),滾動更新是通過新建RS皇帮,將Pod從舊的RS逐步更新到新的RS上卷哩;相反,回滾版本將會退到指定版本的ReplicaSet上属拾。

1.3 ReplicaSet

ReplicaSet副本集簡稱RS将谊,用于實現(xiàn)副本數(shù)的控制,通過上面的學(xué)習(xí)我們可以知道Deployment實際是調(diào)用ReplicaSet實現(xiàn)副本的控制捌年,RS不具備滾動升級和回滾的特性瓢娜,一般推薦使用Deployment,ReplicaSet的定義和Deployment差不多礼预,如下:

  1. 定義ReplicaSet
[root@node-1 happylau]# cat replicaset-demo.yaml 
apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
  name: replicaset-demo
  labels:
    controller: replicaset
  annotations:
    kubernetes.io/description: "Kubernetes Replication Controller Replication"
spec:
  replicas: 3    #副本數(shù)
  selector:      #Pod標(biāo)簽選擇器
    matchLabels:  
      controller: replicaset
  template:      #創(chuàng)建Pod的模板
    metadata:
      labels:
        controller: replicaset
    spec:        #容器信息
      containers:
      - name: nginx-replicaset-demo
        image: nginx:1.7.9
        imagePullPolicy: IfNotPresent
        ports:
        - name: http-80-port
          protocol: TCP
          containerPort: 80
  1. 創(chuàng)建RS并查看RS列表
[root@node-1 happylau]# kubectl apply -f replicaset-demo.yaml 
replicaset.extensions/replicaset-demo created

[root@node-1 happylau]# kubectl get replicasets replicaset-demo 
NAME              DESIRED   CURRENT   READY   AGE
replicaset-demo   3         3         3       15s
  1. 擴(kuò)展副本數(shù)至4個
[root@node-1 happylau]# kubectl scale --replicas=4 replicaset replicaset-demo 
replicaset.extensions/replicaset-demo scaled
[root@node-1 happylau]# kubectl get replicasets replicaset-demo 
NAME              DESIRED   CURRENT   READY   AGE
replicaset-demo   4         4         4       76s
  1. 減少副本數(shù)至2個
[root@node-1 happylau]# kubectl scale --replicas=2 replicaset replicaset-demo 
replicaset.extensions/replicaset-demo scaled
[root@node-1 happylau]# kubectl get replicasets replicaset-demo 
NAME              DESIRED   CURRENT   READY   AGE
replicaset-demo   2         2         2       114s
  1. 鏡像版本升級眠砾,驗證得知不具備版本升級的能力
[root@node-1 happylau]# kubectl set image replicasets replicaset-demo nginx-replicaset-demo=nginx:1.9.1
replicaset.extensions/replicaset-demo image updated  #命令執(zhí)行成功了
ReplicaSet驗證版本更新

ReplicaSet小結(jié):通過上面的演示可以知道,RS定義和Deployment類似,能實現(xiàn)副本的控制褒颈,擴(kuò)展和縮減柒巫,Deployment是更高層次的副本控制器,ReplicaSet主要為Deployment的副本控制器和滾動更新機制谷丸,ReplicaSet本身無法提供滾動更新的能力堡掏。

1.4 ReplicationController

ReplicationController副本控制器簡稱RC,是kubernetes中最早的副本控制器刨疼,RC是ReplicaSet之前的版本泉唁,ReplicationController提供副本控制能力,其定義方式和Deployment揩慕,ReplicaSet相類似亭畜,如下:

  1. 定義ReplicationController
[root@node-1 happylau]# cat rc-demo.yaml 
apiVersion: v1 
kind: ReplicationController 
metadata:
  name: rc-demo 
  labels:
    controller: replicationcontroller 
  annotations:
    kubernetes.io/description: "Kubernetes Replication Controller Replication"
spec:
  replicas: 3
  selector:     #不能使用matchLables字符集模式
    controller: replicationcontroller 
  template:
    metadata:
      labels:
        controller: replicationcontroller   
    spec:
      containers:
      - name: nginx-rc-demo 
        image: nginx:1.7.9
        imagePullPolicy: IfNotPresent
        ports:
        - name: http-80-port
          protocol: TCP
          containerPort: 80
  1. 生成RC并查看列表
[root@node-1 happylau]# kubectl apply -f rc-demo.yaml 
replicationcontroller/rc-demo created

[root@node-1 happylau]# kubectl get replicationcontrollers 
NAME      DESIRED   CURRENT   READY   AGE
rc-demo   3         3         3       103s

#查看詳情
[root@node-1 happylau]# kubectl describe replicationcontrollers rc-demo 
Name:         rc-demo
Namespace:    default
Selector:     controller=replicationcontroller
Labels:       controller=replicationcontroller
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"v1","kind":"ReplicationController","metadata":{"annotations":{"kubernetes.io/description":"Kubernetes Replication Controlle...
              kubernetes.io/description: Kubernetes Replication Controller Replication
Replicas:     3 current / 3 desired
Pods Status:  3 Running / 0 Waiting / 0 Succeeded / 0 Failed
Pod Template:
  Labels:  controller=replicationcontroller
  Containers:
   nginx-rc-demo:
    Image:        nginx:1.7.9
    Port:         80/TCP
    Host Port:    0/TCP
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Events:
  Type    Reason            Age   From                    Message
  ----    ------            ----  ----                    -------
  Normal  SuccessfulCreate  113s  replication-controller  Created pod: rc-demo-hm8s9
  Normal  SuccessfulCreate  113s  replication-controller  Created pod: rc-demo-xnfht
  Normal  SuccessfulCreate  113s  replication-controller  Created pod: rc-demo-lfhc9

3.副本擴(kuò)容至4個

[root@node-1 happylau]# kubectl scale --replicas=4 replicationcontroller rc-demo 
replicationcontroller/rc-demo scaled
[root@node-1 happylau]# kubectl get replicationcontrollers 
NAME      DESIRED   CURRENT   READY   AGE
rc-demo   4         4         4       3m23s 
  1. 副本縮容至2個
[root@node-1 happylau]# kubectl scale --replicas=2 replicationcontroller rc-demo 
replicationcontroller/rc-demo scaled
[root@node-1 happylau]# kubectl get replicationcontrollers 
NAME      DESIRED   CURRENT   READY   AGE
rc-demo   2         2         2       3m51s

寫在最后

本文介紹了kubernetes中三個副本控制器:Deployment,ReplicaSet和ReplicationController迎卤,當(dāng)前使用最廣泛的是Deployment拴鸵,ReplicaSet為Deployment提供滾動更新機制,RC當(dāng)前是舊版的副本控制器蜗搔,當(dāng)前已廢棄劲藐,推薦使用Deployment控制器,具備副本控制器樟凄,擴(kuò)展副本聘芜,縮減副本,滾動升級和回滾等高級能力不同。

參考文獻(xiàn)

Deployment:https://kubernetes.io/docs/concepts/workloads/controllers/deployment/

ReplicaSet:https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/

ReplicationController:https://kubernetes.io/docs/concepts/workloads/controllers/


當(dāng)你的才華撐不起你的野心時厉膀,你就應(yīng)該靜下心來學(xué)習(xí)

返回kubernetes系列教程目錄

?

如果覺得文章對您有幫助,請訂閱專欄二拐,分享給有需要的朋友吧??

關(guān)于作者 劉海平(HappyLau )云計算高級顧問 目前在騰訊云從事公有云相關(guān)工作,曾就職于酷狗凳兵,EasyStack百新,擁有多年公有云+私有云計算架構(gòu)設(shè)計,運維庐扫,交付相關(guān)經(jīng)驗饭望,參與了酷狗,南方電網(wǎng)形庭,國泰君安等大型私有云平臺建設(shè)铅辞,精通Linux,Kubernetes萨醒,OpenStack斟珊,Ceph等開源技術(shù),在云計算領(lǐng)域具有豐富實戰(zhàn)經(jīng)驗富纸,擁有RHCA/OpenStack/Linux授課經(jīng)驗囤踩。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末旨椒,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子堵漱,更是在濱河造成了極大的恐慌综慎,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件勤庐,死亡現(xiàn)場離奇詭異示惊,居然都是意外死亡,警方通過查閱死者的電腦和手機愉镰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門涝涤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人岛杀,你說我怎么就攤上這事阔拳。” “怎么了类嗤?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵糊肠,是天一觀的道長。 經(jīng)常有香客問我遗锣,道長货裹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任精偿,我火速辦了婚禮弧圆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘笔咽。我一直安慰自己搔预,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布叶组。 她就那樣靜靜地躺著拯田,像睡著了一般。 火紅的嫁衣襯著肌膚如雪甩十。 梳的紋絲不亂的頭發(fā)上船庇,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音侣监,去河邊找鬼鸭轮。 笑死,一個胖子當(dāng)著我的面吹牛橄霉,可吹牛的內(nèi)容都是我干的窃爷。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼吞鸭!你這毒婦竟也來了寺董?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤刻剥,失蹤者是張志新(化名)和其女友劉穎遮咖,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體造虏,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡御吞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了漓藕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陶珠。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖享钞,靈堂內(nèi)的尸體忽然破棺而出揍诽,到底是詐尸還是另有隱情,我是刑警寧澤栗竖,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布暑脆,位于F島的核電站,受9級特大地震影響狐肢,放射性物質(zhì)發(fā)生泄漏添吗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一份名、第九天 我趴在偏房一處隱蔽的房頂上張望碟联。 院中可真熱鬧,春花似錦僵腺、人聲如沸鲤孵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽裤纹。三九已至,卻和暖如春丧没,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锡移。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工呕童, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人淆珊。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓夺饲,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子往声,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容