ÎÒÃÇÔÚÒµÎñÉÏÈÝÆ÷µÄ¹ý³ÌÖÐÓöµ½ÁËÈçÏÂÎÊÌ⣺
Ϊ½â¾öÒÔÉÏÎÊÌ⣬ÎÒÃÇÔÚÈÝÆ÷ƽ̨µ±ÖÐÒýÈëÁË openkruise¡£
ÏîÄ¿µØÖ·£ºhttps://github.com/openkruise/kruise
ÏêϸµÄ˵Ã÷¿ÉÒԲο¼ÕâƪÎÄÕ£º
https://yq.aliyun.com/articles/706442
´Óµ±Ç° github ÉϵÄÎĵµÀ´¿´£¬Ä¿Ç° OpenKruise Ö§³ÖÎåÖָĽøµÄ¿ØÖÆÆ÷£º
UnitedDeployment ÊÇÔÚ StatefulSet »ù´¡Éϵĸü¸ß¼¶³éÏó£¬Í¨¹ýÒ»¸ö×ÊÔ´ÃèÊö¿ÉÒÔ¹ÜÀí¶à¸ö StatefulSet µÄʵÀý×飬¿ÉʵÏÖ¶àʵÀý×éµÄ»Ò¶È·¢²¼Óë¹ö¶¯Éý¼¶¡£
Broadcast Job ʵ¼ÊÉϾÍÊÇÒÔ DaemonSet µÄ·½Ê½ÔÚËùÓнڵãÉÏÔËÐÐÒ»´ÎÐÔ Job£¬SidercarSet ÓÃÓÚ Sidercar ×¢Èë¼°¹ÜÀí¡£
¶øÎÒÃÇҪʹÓõ½µÄÕýÊÇÆä Advanced StatefulSet µÄÌØÐÔ¡£¹ØÓÚAdvanced StatefulSet¸üÏêϸµÄÃèÊöÈçÏ£º
ÔÚkubernetes¹Ù·½µÄstatefulSetÉÏ×öÁ˹¦ÄÜÀ©Õ¹£¬¸üвßÂÔÓÉÔÀ´µÄÖ»Ö§³Örecreate£¬À©Õ¹ÎªÍ¬Ê±Ö§³ÖrecreateºÍrollingupdate¡£rollingupdate»¹Ö§³ÖÁ½ÖÖ²ßÂÔ£¬Ò»ÖÖÊÇInPlaceIfPossible£¬ÁíÒ»ÖÖÊÇInPlaceOnly¡£InPlaceIfPossible»á¾¡¿ÉÄܵı£Ö¤Ó¦ÓÃÔÚÔµØÉý¼¶£¨Ö»Ö§³Ö¾µÏñµÄÉý¼¶£¬Èç¹ûÐÞ¸ÄÁËyamlÖеÄÆäËûÅäÖÃÏÔòÎÞ·¨±£Ö¤£©£»InPlaceOnly»á±£Ö¤Ó¦ÓÃÒ»¶¨ÔÚÔµØÉý¼¶£¬µ«ÊÇËüÒ²Ö»Ö§³Ö¾µÏñµÄÉý¼¶£¬Èç¹ûÐÞ¸ÄÁËyamlÖеÄÆäËûÅäÖÃÏ»áÖ±½ÓÅ׳öÒì³£¡£ÁíÍ⣬ÔÉúµÄStatefulSetÖ»ÄÜ×öµ½´®ÐÐÆô¶¯£¬Advanced StatefulSet¿ÉÒÔ×öµ½²¢ÐÐÆô¶¯¡£
¹Ù·½µÄ°²×°Îĵµ¿ÉÒÔÖ±½Ó²Î¿¼ÕâÀ
https://github.com/openkruise/kruise/tree/master/docs/tutorial
ÎÒ¼òµ¥Ð´Ï°²×°²½Ö裺
wget?https://github.com/openkruise/kruise/releases/download/v0.4.0/kruise-chart.tgz??tar?xf?kruise-chart.tgz??cd?kruise??helm?install?openkruise?./?-n?kube-system?
Ä¿Ç°openkruiseÒѾ¸üе½ÁËv0.5.0µÄ°æ±¾¡£Ò²¿ÉÒÔÖ±½Óͨ¹ý°¢ÀïÔƵÄÓ¦ÓÃĿ¼À´Íê³ÉÆä°²×°¡£
ÏÂÃæ˵һϸüÏêϸµÄ°²×°¹ý³Ì£º
1¡¢»ñÈ¡helm°ü
helm?repo?add?incubator?http://aliacs-k8s-cn-beijing.oss-cn-beijing.aliyuncs.com/app/charts-incubator/??helm?search?repo?ack-kruise??helm?fetch?incubator/ack-kruise??tar?xf?ack-kruise-0.5.0.tgz??cd?ack-kruise?
ÐÞ¸Ävalues.ymlÎļþÈçÏ£º
#?Default?values?for?kruise.??revisionHistoryLimit:?3??manager:??#?settings?for?log?print??log:??#?log?level?for?kruise-manager??level:?"4"??#?image?settings??image:??#?repository?for?kruise-manager?image??repository:?hub.example.com/library/kruise-manager??#?tag?for?kruise-manager?image??tag:?v0.5.0??#?resources?of?kruise-manager?container??resources:??limits:??cpu:?500m??memory:?1Gi??requests:??cpu:?500m??memory:?1Gi??metrics:??addr:?localhost??port:?8080??custom_resource_enable:?StatefulSet?
ÆäʵÕâÀï¾Í¸ÄÁËÁ½¸ö¶«Î÷£º
È»ºóÖ´Ðа²×°²Ù×÷£º
helm?install?ack-kruise?-n?kube-system?./?
°²×°Íêºó£¬»áÉú³ÉÒÔÏÂÎåÖÖcrd£º
#?kubectl?get?crds?|grep?kruise??broadcastjobs.apps.kruise.io?2020-04-26T10:29:28Z??clonesets.apps.kruise.io?2020-04-26T10:29:28Z??sidecarsets.apps.kruise.io?2020-04-26T10:29:28Z??statefulsets.apps.kruise.io?2020-04-26T10:29:28Z??uniteddeployments.apps.kruise.io?2020-04-26T10:29:28Z?
ͬʱ»á´´½¨Ò»¸ö kruise-system µÄÃüÃû¿Õ¼ä£¬²¢ÔÚÀïÃæÉú³ÉÒ»¸ö pod£º
#?kubectl?get?pods?-n?kruise-system??NAME?READY?STATUS?RESTARTS?AGE??kruise-controller-manager-0?1/1?Running?0?55m?
ÑéÖ¤ statefulset ×ÊÔ´µÄ webhook ÊÇ·ñ±»Õý³£´´½¨£º
#?kubectl?get?mutatingwebhookconfiguration?-o?yaml??apiVersion:?v1??items:??-?apiVersion:?admissionregistration.k8s.io/v1??kind:?MutatingWebhookConfiguration??metadata:??creationTimestamp:?"2020-04-26T10:29:28Z"??generation:?3??name:?kruise-mutating-webhook-configuration??resourceVersion:?"622944921"??selfLink:?/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations/kruise-mutating-webhook-configuration??uid:?303a7b7f-3a62-49d7-8ef6-082ea288eeb2??webhooks:??-?admissionReviewVersions:??-?v1beta1??clientConfig:??caBundle:?xxxxx??service:??name:?kruise-webhook-server-service??namespace:?kruise-system??path:?/mutating-create-update-statefulset??port:?443??failurePolicy:?Fail??matchPolicy:?Exact??name:?mutating-create-update-statefulset.kruise.io??namespaceSelector:??matchExpressions:??-?key:?control-plane??operator:?DoesNotExist??objectSelector:?{}??reinvocationPolicy:?Never??rules:??-?apiGroups:??-?apps.kruise.io??apiVersions:??-?v1alpha1??operations:??-?CREATE??-?UPDATE??resources:??-?statefulsets??scope:?'*'??sideEffects:?Unknown??timeoutSeconds:?30??......?
Ò²ÊÇÈ·±£ÆäËûδÓõ½µÄÏà¹Ø mutatingwebhook Êǹرյġ£¡£ÔÚʵ¼Ê²âÊÔÖУ¬SidecarSet ×ÊÔ´µÄ mutatingwebhook ¿ÉÄܻᵼÖ´´½¨µÄ pod ³ö²»À´¡£
ÕâЩwebhook±¾ÖÊÉ϶¼ÊÇkubernetesµÄadmissioncontrol£¬Ö»ÒªÄã°²×°ÁË£¬ÄÄÅÂûÓÐʹÓ㬵±ÄãÔÚÖ´ÐÐÏà¹Ø²Ù×÷ʱ£¬¶¼ÐèÒª±»ËùÓеÄadminssioncontrol¼ì²â£¬Èç¹ûadmissioncontrol±¾Éí³öÁËÎÊÌ⣬¾Í»áµ¼ÖÂÇëÇóÎÞ·¨ÏìÓ¦µÄ״̬¡£Í¬Ê±ÕâЩwebhookÀàÐ͵ÄadminssioncontrolÒ²»áÍÏÂýÏìÓ¦Ëٶȡ£
ÏÂÃæÊǹٷ½ÌṩµÄÒ»¸ö»ùÓÚ openkruise ÌṩµÄ statefulset ×ÊÔ´µÄ²¿ÊðÎļþʾÀý£º
apiVersion:?apps.kruise.io/v1alpha1??kind:?StatefulSet??metadata:??name:?demo-v1-guestbook-kruise??labels:??app.kubernetes.io/name:?guestbook-kruise??app.kubernetes.io/instance:?demo-v1??spec:??replicas:?3??serviceName:?demo-v1-guestbook-kruise??selector:??matchLabels:??app.kubernetes.io/name:?guestbook-kruise??app.kubernetes.io/instance:?demo-v1??template:??metadata:??labels:??app.kubernetes.io/name:?guestbook-kruise??app.kubernetes.io/instance:?demo-v1??spec:??readinessGates:??#?A?new?condition?that?ensures?the?pod?remains?at?NotReady?state?while?the?in-place?update?is?happening??-?conditionType:?InPlaceUpdateReady??containers:??-?name:?guestbook-kruise??image:?openkruise/guestbook:v1??imagePullPolicy:?Always??ports:??-?name:?http-server??containerPort:?3000??podManagementPolicy:?Parallel?#?allow?parallel?updates,?works?together?with?maxUnavailable??updateStrategy:??type:?RollingUpdate??rollingUpdate:??#?Do?in-place?update?if?possible,?currently?only?image?update?is?supported?for?in-place?update??podUpdatePolicy:?InPlaceIfPossible??#?Allow?parallel?updates?with?max?number?of?unavailable?instances?equals?to?2??maxUnavailable:?3?
Ö´Ðв¿ÊðÖ®ºó£¬Æô¶¯ pod ʾÀýÈçÏ£º
#?kubectl?get?pods?|grep?demo-v1??demo-v1-guestbook-kruise-0?1/1?Running?0?62s??demo-v1-guestbook-kruise-1?1/1?Running?0?62s??demo-v1-guestbook-kruise-2?1/1?Running?0?62s?
Ò²¿Éͨ¹ýÈçϲÙ×÷²é¿´×ÊԴ״̬£º
#?kubectl?get?sts.apps.kruise.io??NAME?DESIRED?CURRENT?UPDATED?READY?AGE??demo-v1-guestbook-kruise?3?3?3?3?56s??openkruiseÌṩµÄstatefulsetµÄ×ÊÔ´ÃûΪsts.apps.kruise.io?
¸üÏêϸµÄÓ÷¨¿É²Î¿¼£º
Advanced StatefulSet¾ßÌåµÄʹÓ÷½·¨£ºhttps://github.com/openkruise/kruise/blob/master/docs/concepts/astatefulset/README.md
Advanced StatefulSetʾÀýÎļþ£ºhttps://github.com/openkruise/kruise/blob/master/docs/tutorial/v1/guestbook-statefulset.yaml
UnitedDeployment¾ßÌåµÄʹÓ÷½·¨£ºhttps://github.com/openkruise/kruise/blob/master/docs/tutorial/uniteddeployment.md
UnitedDeploymentʾÀýÎļþ£ºhttps://raw.githubusercontent.com/kruiseio/kruise/master/docs/tutorial/v1/uniteddeployment.yaml
ÁìȡרÊô 10ÔªÎÞÃż÷ȯ
˽Ïí×îР¼¼Êõ¸É»õ