涓�����绛�

��绛剧��涓昏�浣���锛�瑙e�冲��绫诲����璧�婧�瀵硅薄瓒��ヨ�澶�锛�涓轰��村ソ��绠$��锛����ф��绛惧��缁�锛�

甯哥�ㄧ����绛惧��绫伙�
release锛�����锛�锛�stable锛�绋冲����锛���canary锛���涓�����������浠ョ��瑙d负娴�璇���锛���beta锛�娴�璇���锛�
environment锛���澧�����锛�锛�dev锛�寮���锛���qa锛�娴�璇�锛���production锛���河渠э�
application锛�搴���锛�锛�ui��as锛�搴��ㄨ蒋浠讹���pc��sc
tier锛��舵��灞�绾э�锛�frontend锛���绔�锛���backend锛���绔�锛���cache锛�缂�海洋�������锛�
partition锛����虎�锛�customerA锛�疏浚㈡��A锛���customerB锛�疏浚㈡��B锛�
track锛����х骇��锛�锛�daily锛�姣�澶╋���weekly锛�姣���锛�

K8s��缇や腑�界�舵病��瀵规��涓ユ�肩��瑕�姹�锛�浣�����绛捐���瑕����起�瑙����ユ��锛��逛究��宸变��逛究��河渠猴�

甯哥�ㄧ���戒护��锛�

[root@master yaml]# kubectl get pod --show-labels    //�剧ずpod����绛�
[root@master yaml]# kubectl get pod -L env       //�剧ず��瀵瑰�����
[root@master yaml]# kubectl get pod -l env             //��杩�广大�l�ョ��浠�����env��绛剧��璧�婧�
[root@master yaml]# kubectl get pod -l env  --show-labels      //�剧ず瀵瑰�������
[root@master yaml]# kubectl label pod labels app=pc     //缁�pod����绛�
[root@master yaml]# kubectl label pod labels app-          //�婚�ゆ��绛�
[root@master yaml]# kubectl label pod labels env=dev --overwrite    //淇��规��绛惧��疏浚�

��绛句���绛鹃���╁�ㄧ���崇郴锛�

  • 濡�����绛炬��澶�涓�锛���绛鹃���╁�ㄩ���╁�朵腑涓�涓�锛�涔���浠ュ�宠������锛�
  • 濡������╁�ㄦ��澶�涓�锛��d���绛惧�椤绘弧瓒虫��绛鹃���╁�ㄧ���′欢锛������宠������锛�
  • ��绛鹃���╁��锛���绛剧���ヨ�㈣�婊ゆ�′欢
    �轰�绛��煎�崇郴��锛�equality-based锛�锛���=������==������锛�=����涓や釜绛�河渠�锛�����涓�涓�涓�绛�河渠�
    �轰������崇郴锛�set-based锛�锛�in��notin��exists涓�绉�锛�

    selector:
      matchLables:                 //��疏浚����煎�硅〃绀虹����绛鹃���╁��
        app: nginx
      matchExpressions:             //�轰�琛ㄨ揪寮��ユ��疏浚�����绛鹃���╁�ㄣ�����╁�ㄥ��琛ㄩ�翠负���昏�涓����崇郴锛�浣跨��In��NotIn��浣���锛���values涓�寮哄�惰�姹�涓虹┖��海洋�绗�涓插��琛�锛���浣跨��Exists��DostNotExists�讹���values蹇�椤讳负绌猴�
        - {key: name,operator: In,values: [zhangsan,lisi]}
        - {key: age,operator: Exists,values:}

    浣跨�ㄦ��绛鹃���╁�ㄧ���昏�锛�

  • ���舵��疏浚���澶�涓����╁�ㄤ��寸���昏��崇郴涓衡��涓�����浣�锛�
  • 浣跨�ㄧ┖�肩����绛鹃���╁�ㄦ���崇��姣�涓�璧�婧�瀵硅薄�藉�琚����╀腑锛�
  • 绌虹����绛鹃���╁�ㄦ��娉���涓�浠讳�璧�婧�锛�
  • 河渠���甯歌���Pod�у�跺��

    Pod�у�跺�ㄥ�烘��姒�蹇碉�

    Pod��kubernetes����广大�����锛���涓诲���寤虹��pod���ゅ氨娌℃��河渠�锛�浣�����杩�璧�婧��у�跺�ㄥ��寤虹��pod濡������よ�浼���寤恒��pod�у�跺�ㄥ氨���ㄤ�疏浚��颁唬�挎��浠��荤�$��pod��涓��村�锛�骞跺府��浠�纭�淇�姣�涓�涓�pod璧�婧�澶�河渠���浠���疏浚�涔������������������舵��锛�pod璧�婧��雾�版����兄弟���瑕�����疏浚瑰��锛�濡���涓��拈��������棰���璇�浼��轰���绉�绛��ラ���扮演��������ㄩ��搴�����pod�伴����

    Kubernetes涓���寤轰�寰�澶�controller锛��у�跺��锛�锛�杩�河渠��稿�河渠�闪动�涓��舵���虎�饨ゆ�ユ�у��Pod���蜂��舵����饩�涓恒��

    Pod�у�跺�ㄦ��寰�澶�绉�绫诲��锛�浣�������kubernetes涓�甯哥�ㄧ���у�跺�ㄦ��锛�

  • Replication Controller锛�RC锛�锛���Kubernetes绯荤�涓����稿�姒�蹇碉��ㄤ�疏浚�涔�Pod�������伴������Master��锛�RC杩�绋���杩�RC��疏浚�涔��ュ����Pod����寤恒�����с������绛���浣����规��RC疏浚�涔�锛�Kubernetes�藉�纭�淇��ㄤ换���跺�婚�借�借�琛��ㄤ���疏浚���Pod"����"锛�Replica锛��伴��������kubernetes��杩�浠f�存�起�RC�冲�琚�搴�寮�锛���娓�琚�ReplicaSet�夸唬锛�
  • ReplicaSet锛�RS锛�锛�疏浚����稿�浣��ㄦ��浠g�ㄦ�山��寤烘��疏浚��伴����Pod����锛�骞剁‘疏浚�Pod����涓��村�河渠�婊¤冻�ㄦ�锋�����伴�����舵��锛�澶���广大�琛ワ����舵�����╃缉瀹规�哄�躲��涓昏���涓�涓�缁�浠讹��ㄦ�锋������Pod�����伴��锛���绛鹃���╁��锛����╁�河渠���宸辩�$�����у�剁��Pod锛�褰���Pod�伴��涓�婊¤冻�ㄦ�锋�����伴���讹��规��璧�婧�妯℃�胯�琛��板缓锛�
  • Deployment锛�宸ヤ���ReplicaSet涔�涓�锛��ㄤ�绠$�����舵��搴���锛��や�ReplicaSet���哄�讹�杩�澧���河渠�婊��ㄦ�存�板����婊����斤���岛�澹版��寮���缃�锛�
  • DaemonSet锛��ㄤ�纭�淇���缇や腑��姣�涓�涓����瑰��杩�琛��瑰����pod����锛���甯哥�ㄤ�疏浚��扮演郴缁�绾у���颁换�°��姣�濡�ELK���°��瑕�姹�锛����℃�����舵����锛����″�椤绘��疏浚��よ�绋�锛�
  • Pod�у�跺�ㄩ��甯稿����涓�涓�缁����ㄥ��锛�

  • replicas锛�������pod瀵硅薄�����伴��锛�
  • selector锛�褰����у�跺�ㄥ�归��Pod瀵规�ら」��������绛鹃���╁��锛�
  • template锛�pod������妯℃�救救�
  • 1锛�Replication Controller锛�RC锛�

    �烘��姒�蹇�

    Replication Controller 绠�绉�RC锛�疏浚��界‘淇�浠讳��跺��Kubernetes��缇や腑����疏浚��伴����pod����(replicas)�ㄨ�琛�锛� 濡���广大�河渠���疏浚��伴����pod����(replicas)锛�Replication Controller浼����ㄦ�扮演��Container锛���涔�浼���姝诲�浣���浠ヤ�璇��伴��涓�����Replication Controller浣跨�ㄩ���疏浚�涔���pod妯℃�垮��寤�pods锛�涓�����寤烘����锛�pod 妯℃�垮����寤虹��pods娌℃��浠讳��宠��锛���浠ヤ慨��pod 妯℃�胯��涓�浼�瀵瑰凡��寤�pods��浠讳�褰卞��锛�涔���浠ョ�存�ユ�存�伴��杩�Replication Controller��寤虹��pods��瀵逛��╃��pod 妯℃�垮��寤虹��pods锛�Replication Controller�规��label selector�ュ�宠��锛���杩�淇���pods��label��浠ュ���ゅ�瑰���pods��

    ����Replication Controller ���ㄤ�澶��跺���ㄥ�甯告�堕���拌�搴����圭����涓�kubernetes缁�浠讹����ラ��娓�琚�replicaSet浠f�夸����板�ㄥ�烘��涓�寰�广大�瑙���Replication Controller锛�疏浚��冲�琚�搴�寮���浣�������kubernates疏浚瑰�ㄧ��澧�杩��������戒���RC锛���浠ヨ�����蹇�瑕��ラ��疏浚����ㄦ���

    �规��Replication Controller��疏浚�涔�锛�Kubernetes�藉�纭�淇��ㄤ换���跺�婚�借�借�琛��ㄤ���疏浚���Pod"����"锛�Replica锛��伴����濡�����杩�澶���Pod�����ㄨ�琛�锛�绯荤�广大变�����涓�河渠�Pod锛�濡���杩�琛���Pod�����伴��澶�广大�锛�绯荤�广大变������ㄤ�河渠�Pod锛��讳�锛���杩�RC��疏浚�涔�锛�Kubernetes�绘��淇�璇���缇や腑杩�琛����ㄦ�锋�����������伴����

    Replication Controller锛�RC锛����圭�戊寅�

  • 纭�淇�Pod�伴��锛�
  • 纭�淇�Pod�ュ悍锛�
  • 寮规�т几缂╋�
  • 婊��ㄦ�存�起�
  • 搴��ㄧず岛�

    [root@master yaml]# vim rc.yaml 
    kind:  ReplicationController 
    apiVersion: v1
    metadata:
      name: http-rc
    spec:
      replicas: 2
        selector:
          name: http-rc
      template:
        metadata:
          labels:
            name: http-rc
        spec:
          containers:
          - name: http-rc
            image: httpd
    [root@master yaml]# kubectl apply -f rc.yaml
    [root@master yaml]# kubectl get rc http-rc 
    NAME      DESIRED   CURRENT   READY   AGE
    http-rc   2         2         2       103s
    [root@master yaml]# kubectl get pod -o wide
    NAME            READY   STATUS    RESTARTS   AGE   IP           NODE     NOMINATED NODE   READINESS GATES
    http-rc-l2sp6   1/1     Running   0          98s   10.244.1.5   node01   <none>           <none>
    http-rc-xghkm   1/1     Running   0          98s   10.244.2.5   node02   <none>           <none>
    [root@master yaml]# kubectl delete -f rc.yaml 

    2锛�ReplicaSet 锛�RS锛�

    �烘��姒�蹇�

    ReplicaSet��Replication Controller���夸唬��锛�纭�淇�Pod�����板�ㄤ换涓��跺�婚�界簿纭�婊¤冻�����笺���ㄦ�ョ‘淇�疏浚瑰�ㄥ��ㄧ�������板�缁�淇����ㄧ�ㄦ�山��涔��������起��冲�����疏浚瑰�ㄥ�甯搁���虎�浼����ㄥ��寤烘�扮演��Pod�ユ�夸唬锛���濡���寮�甯稿��烘�ョ��疏浚瑰�ㄤ�浼����ㄥ���躲���界��ReplicaSet��浠ョ��绔�浣跨��锛�浣�涓���杩���寤鸿��浣跨�� Deployment �ヨ���ㄧ�$��ReplicaSet锛�杩��山氨������蹇�璺��朵��哄�剁��涓��煎�归��棰�锛�姣�濡�ReplicaSet涓�����rolling-update浣�Deployment����锛���涔�广大辨��璇�Replicaset��甯镐�浼��存�ュ��寤猴������ㄥ��寤烘��楂�灞�绾х��deployment璧�婧��惰���ㄥ��寤恒��

    RS涓�RC�告��锛�RS涓�浠�����绛��肩����绛惧��锛���涓�杩������轰���������绛鹃���╁��锛�

    ReplicaSet锛�RS锛�涓昏����斤�

  • 纭�淇�Pod�伴��锛�
  • 纭�淇�Pod�ュ悍锛�
  • 寮规�т几缂╋�
  • 婊��ㄦ�存�起�
  • 搴��ㄧず岛�

    [root@master yaml]# cat rs.yaml 
    kind:  ReplicaSet
    apiVersion: apps/v1
    metadata:
      name: http-rs
    spec:
      replicas: 2
      selector:
        matchLabels:
          name: http-rs
      template:
        metadata:
          labels:
            name: http-rs
        spec:
          containers:
          - name: http-rs
            image: httpd
    [root@master yaml]# kubectl apply -f rs.yaml 
    [root@master yaml]# kubectl get rs http-rs 
    NAME      DESIRED   CURRENT   READY   AGE
    http-rs   2         2         2       11s
    [root@master yaml]# kubectl get pod -o wide
    NAME            READY   STATUS    RESTARTS   AGE   IP           NODE     NOMINATED NODE   READINESS GATES
    http-rs-2sstf   1/1     Running   0          19s   10.244.1.6   node01   <none>           <none>
    http-rs-jm8ph   1/1     Running   0          19s   10.244.2.6   node02   <none>           <none>
    [root@master yaml]# kubectl delete -f rs.yaml 

    �规��涓��㈢��yaml��浠跺��浠ョ���虎�ReplicaSet��Replication Controller��template�ㄥ����涓��风��锛�浣���selector澶�涓�涓��枫��Replication Controller��selector , ReplicaSet�� selector.matchLables���╁�� 锛�杩��锋�寸����锛��村�锋��琛ㄨ揪��锛�

    RS������spec.selector ����matchLabels��matchExpressions涓ょ��归���哄��!

    ReplicaSet 涓� Replication Controller ���哄��

  • ReplicaSet ��绛鹃���╁�ㄧ���藉���村己锛�
  • Replication Controller���芥��疏浚���绛惧��锛���绛惧�硷�
  • Replicaset ��浠ユ��疏浚�env=pro,env=devel ,涔���浠ユ��疏浚���瑕�����env��绛惧氨琛�锛���瑙d负env=*锛�
  • �讳�锛������ヨ�达�RS��浠ヤ唬��RC�����������斤���涓�RC宸茬�澶�河渠�蹇�琚�娣�姹扮��杈圭�锛�

    3锛�Deployment

    �烘��姒�蹇�

    Deployment��寤轰�ReplicaSet涔�涓�锛�����河渠�浠跺���舵���ョ������婊�������璁板������������ㄥ��绾э�Deployment��澶�绉����ㄦ�存�版�规�锛�Recreate锛������ゅ���板缓锛�RollingUpdate锛�婊��ㄥ��绾э���姝ユ�挎����Deployment涓�Pod��Replica Set锛�涓�涓�浠�Replication Controller锛���岛�澹版��寮��存�起�疏浚���浠ユ�村���逛究��绠$��Pod��Replica Set������瑕��� Deployment 涓���杩版�宠��������舵����浠�涔�锛�Deployment controller 广大变�甯��ㄥ� Pod ��ReplicaSet ��疏浚����舵���瑰���版�ㄧ�������舵����姝ゅ�锛�涔���浠ュ��涔�涓�涓��ㄦ�扮演�� Deployment �ュ��寤� ReplicaSet �����ゅ凡��Deployment 骞跺��寤轰�涓��扮演���ユ�挎����

    Deployment�у�跺�ㄥ�稿����搴��ㄥ�涓�锛�

  • 浣跨��Deployment�ュ��寤�ReplicaSet (��RS)��RS�ㄥ���板��寤�pod��妫��ュ���ㄧ�舵��锛���疏浚�������杩���澶辫触锛�
  • �ョ����杩��存��Deployment��PodTemplateSpec海洋�娈垫�ュ0��Pod���扮演�舵��锛�杩�浼���寤轰�涓��扮演��RS锛�Deployment浼����ф�у�剁������广大�pod浠��х��RS绉诲�ㄥ�版�扮演��RS涓�锛�
  • 濡���褰����舵��涓�绋冲��锛���婊��颁�����Deployment revision��姣�娆″��婊��戒��存��Deployment��revision锛�
  • �╁��Deployment浠ユ弧瓒虫�拈����璐�潘斤�
  • ����Deployment�ュ���PodTemplateSpec��澶�涓�淇�澶�锛��跺���㈠�涓�绾匡�
  • �规��Deployment ���舵���ゆ��涓�绾挎����hang浣�河渠�锛�
  • 娓��ゆ�х��涓�蹇�瑕��� ReplicaSet锛�
  • Deployment��RC��RS涓��烽�芥��Kubernetes��涓�涓��稿���疏浚癸�涓昏���璐e���锋��涓轰�淇�璇�pod���伴�����ュ悍锛�90%�����戒�Replication Controller疏浚��ㄤ��凤���浠ョ�����颁�浠g��Replication Controller��浣���锛�疏浚����山�河渠�Replication Controller涔�澶����扮演�规�э�

  • RC���ㄩ�ㄥ���斤�
  • 河渠�浠跺���舵���ョ��锛�
  • ��婊�锛�
  • ����璁板�锛�
  • ����������锛�
  • 澶�绉���绾ф�规�锛�
  • 涓������仪式�锛�涓�河渠烘�ㄨ��浣跨��Deployment锛�

    搴��ㄧず岛�

    [root@master yaml]# cat deployment.yaml 
    kind:  Deployment
    apiVersion: extensions/v1beta1
    metadata:
      name: http-deployment
    spec:
      replicas: 2
      selector:
        matchLabels:
          name: http-deployment
      template:
        metadata:
          labels:
            name: http-deployment
        spec:
          containers:
          - name: http-deployment
            image: httpd
    [root@master yaml]# kubectl apply -f deployment.yaml 
    [root@master yaml]# kubectl get deployments. http-deployment 
    NAME              READY   UP-TO-DATE   AVAILABLE   AGE
    http-deployment   2/2     2            2           9s
    [root@master yaml]# kubectl get pod -o wide
    NAME                               READY   STATUS    RESTARTS   AGE   IP           NODE     NOMINATED NODE   READINESS GATES
    http-deployment-548ddf7b65-77vfk   1/1     Running   0          18s   10.244.1.7   node01   <none>           <none>
    http-deployment-548ddf7b65-hdczk   1/1     Running   0          18s   10.244.2.7   node02   <none>           <none>
    [root@master yaml]# kubectl delete -f deployment.yaml 

    4锛�DaemonSet锛�DS锛�

    �烘��姒�蹇�

    DaemonSet纭�淇��ㄩ��锛�����涓�河渠�锛�Node���逛�杩�琛�涓�涓�Pod ������锛���浣跨�ㄨ���归���╁�ㄥ�����规��绛炬��疏浚�Pod浠��ㄩ�ㄥ��Node���硅�琛���褰���Node���ラ��缇ゆ�讹�浼�涓轰�浠��板�涓�涓�Pod锛�褰���Node浠���缇ょЩ�ゆ�讹�杩�河渠�Pod涔�浼�琚����躲������ DaemonSet广大�浼����ゅ����寤虹������Pod��DaemonSet甯哥�ㄤ�海洋��ㄣ���ュ������х把瀹��よ�绋���

    DeamonSet绠������ㄦ���锛��ㄦ������ Node 涓��藉���ㄤ�涓� DaemonSet锛�广大�琚�浣�涓烘��绉�绫诲���� daemon 浣跨�ㄣ�� 涓�涓�绋�寰�澶������ㄦ����芥��锛�瀵瑰������姣�绉�绫诲���� daemon 浣跨�ㄥ�涓� DaemonSet锛�浣��锋��涓�������蹇�锛���/��瀵逛���纭�浠剁被���锋��涓�������海洋���CPU瑕�姹���

    搴��ㄧず岛�

    [root@master yaml]# cat ds.yaml 
    kind:  DaemonSet
    apiVersion: extensions/v1beta1
    metadata:
      name: http-ds
    spec:
      selector:
        matchLabels:
          name: http-ds
      template:
        metadata:
          labels:
            name: http-ds
        spec:
          containers:
          - name: http-ds
            image: httpd
    [root@master yaml]# kubectl apply -f ds.yaml 
    daemonset.extensions/http-ds created
    [root@master yaml]# kubectl get ds http-ds 
    NAME      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    http-ds   2         2         2       2            2           <none>          17s
    [root@master yaml]# kubectl get pod
    NAME            READY   STATUS    RESTARTS   AGE
    http-ds-gkscx   1/1     Running   0          39s
    http-ds-nbq69   1/1     Running   0          39s
    [root@master yaml]# kubectl delete -f ds.yaml 

    娉ㄦ��锛�DaemonSet涓�涓�����replicas锛�����锛��伴����疏浚�浼��规��褰���k8s��缇や腑��node���ㄧ����锛�

    �������������������������版�ょ���锛���璋㈤��璇烩����������������������������