±à¼ÍƼö: |
±¾ÎÄÕë¶ÔÈÈÃÅ
Serverless ƽ̨ Knative£¬½âÎöÆäÓë×Ô¶¯À©ÈÝÃÜÇÐÏà¹ØµÄÁ÷Á¿ÊµÏÖ»úÖÆ£¬Ï£ÍûÄܹ»°ïÖú´ÓÒµÕ߸üºÃµØÀí½â
Knative autoscale ¹¦ÄÜ¡£
ÎÄÕÂÀ´×ÔÓڼܹ¹Í·Ìõ,ÓÉAlice±à¼¡¢ÍƼö¡£ |
|
ÒýÑÔ¡ª¡ª´Ó×Ô¶¯À©ËõÈÝ˵Æð
·þÎñ½ÓÊÕµ½Á÷Á¿ÇëÇóºó£¬´Ó 0 ×Ô¶¯À©ÈÝΪ N£¬ÒÔ¼°Ã»ÓÐÁ÷Á¿Ê±×Ô¶¯ËõÈÝΪ 0£¬ÊÇ Serverless
ƽ̨×îºËÐĵÄÒ»¸öÌØÕ÷¡£
¿ÉÒÔ˵£¬×Ô¶¯À©ËõÈÝ»úÖÆÊÇÄǶ¥»Ê¹Ú£¬´÷ÉÏÖ®ºó²ÅÄܱ»³ÆÖ®Îª Serverless¡£
µ±È»Á˽â Kubernetes µÄÈË»áÓÐÒÉÎÊ£¬HPA ²»¾ÍÊÇÓÃÀ´¸É×Ô¶¯À©ËõÈݵÄʶùµÄÂð£¿ÄѵÀÎÒÓÃÁË
HPA ¾Í¿ÉÒÔÒ¡ÉíÒ»±ä³ÉΪ Serverless ÁË¡£
ÕâÀïÓÐÒ»µã¹Ø¼üµÄÇø±ðÔÚÓÚ£¬Serverless ÓïÒåϵÄ×Ô¶¯À©ËõÈÝÊÇ¿ÉÒÔÈ÷þÎñ´Ó 0 µ½ N µÄ£¬µ«ÊÇ
HPA ²»ÄÜ¡£HPA µÄ»úÖÆÊǼì²â·þÎñ Pod µÄ metrics Êý¾Ý£¨ÀýÈç CPU µÈ£©È»ºó°Ñ
Deployment À©ÈÝ£¬µ«µ±Äã°Ñ Deployment ¸±±¾ÊýÖÃΪ 0 ʱ£¬Á÷Á¿½ø²»À´£¬metrics
Êý¾ÝÓÀԶΪ 0£¬´Ëʱ HPA Ò²ÎÞÄÜΪÁ¦¡£
ËùÒÔ HPA Ö»ÄÜÈ÷þÎñ´Ó 1 µ½ N£¬¶ø´Ó 0 µ½ 1 µÄÕâ¸ö¹ý³Ì£¬ÐèÒª¶îÍâµÄ»úÖÆ°ïÖú hold
סÇëÇóÁ÷Á¿£¬À©ÈÝ·þÎñ£¬ÔÙת·¢Á÷Á¿µ½·þÎñ£¬Õâ¾ÍÊÇÎÒÃdz£ËµµÄÀäÆô¶¯¡£
¿ÉÒÔ˵£¬ÀäÆô¶¯ÊÇ Serverless »Ê¹ÚÉϵÄÄÇ¿ÅÃ÷Ö飬ÈçºÎʵÏÖ¸üºÃ¡¢¸ü¿ìµÄÀäÆô¶¯£¬ÊÇËùÓÐ Serverless
ƽ̨¼«ÖÂ×·ÇóµÄÄ¿±ê¡£
Knative ×÷ΪĿǰ±»ÉçÇøºÍ¸÷´ó³§ÉÌÈç´ËÖØÊÓºÍÊܹØ×¢µÄ Serverless ƽ̨£¬µ±È»Ò²ÔÚ²»ÒÅÓàÁ¦µÄÓÅ»¯×Ô¶¯À©ËõÈݺÍÀäÆô¶¯¹¦ÄÜ¡£
²»¹ý£¬±¾ÎIJ¢²»´òËãÖ±½Ó½éÉÜ Knative ×Ô¶¯À©ËõÈÝ»úÖÆ£¬¶øÊÇÏÈ̽¾¿Ò»Ï Knative ÖеÄÁ÷Á¿ÊµÏÖ»úÖÆ£¬Á÷Á¿»úÖÆºÍ×Ô¶¯À©ÈÝÃÜÇÐÏà¹Ø£¬Ö»ÓÐÁ˽âÆäÖеİÂÃØ£¬²ÅÄܸüºÃµØÀí½â
Knative autoscale ¹¦ÄÜ¡£ÓÉÓÚ Knative Æäʵ°üÀ¨ Building(Tekton)¡¢Serving
ºÍ Eventing£¬ÕâÀïֻרעÓÚ Serving ²¿·Ö¡£
ÁíÍâÐèÒªÌáǰ˵Ã÷µÄÊÇ£¬Knative ²¢²»Ç¿ÒÀÀµ Istio£¬Serverless Íø¹ØµÄʵ¼ÊÑ¡Ôñ³ýÁ˼¯³É
Istio£¬»¹Ö§³Ö Gloo¡¢Ambassador µÈ¡£Í¬Ê±£¬¼´Ê¹Ê¹ÓÃÁË Istio£¬Ò²¿ÉÒÔÑ¡ÔñÊÇ·ñʹÓÃ
envoy sidecar ×¢Èë¡£±¾ÎÄĬÈÏʹÓà Istio ºÍ×¢Èë sidecar µÄ²¿Êð·½Ê½¡£
2¡¢¼òµ¥µ«ÊÇÓеã¹ýʱµÄÀϰæÁ÷Á¿»úÖÆ
ÕûÌå¼Ü¹¹»Ø¹Ë
ÏȻعËһϠKnative ¹Ù·½µÄÒ»¸ö¼òµ¥µÄÔÀíʾÒâͼÈçÏÂËùʾ¡£Óû§´´½¨Ò»¸ö Knative Service£¨ksvc£©ºó£¬Knative
»á×Ô¶¯´´½¨ Route£¨route£©¡¢Configuration£¨cfg£©×ÊÔ´£¬È»ºó cfg »á´´½¨¶ÔÓ¦µÄ
Revision£¨rev£©°æ±¾¡£rev ʵ¼ÊÉÏÓֻᴴ½¨ Deployment Ìṩ·þÎñ£¬Á÷Á¿×îÖÕ»á¸ù¾Ý
route µÄÅäÖ㬵¼Èëµ½ÏàÓ¦µÄ rev ÖС£

ÕâÊǼòµ¥µÄ CRD Êӽǣ¬Êµ¼ÊÉÏ Knative µÄÄÚ²¿ CRD »á¶àһЩ²ã´Î½á¹¹£¬Ïà¶Ô¸ü¸´ÔÓÒ»µã¡£ÏÂÎÄ»áÏêϸÃèÊö¡£
ÀäÆô¶¯Ê±µÄÁ÷Á¿×ª·¢
´ÓÀäÆô¶¯ºÍ×Ô¶¯À©ËõÈݵÄʵÏֽǶȣ¬¿ÉÒԲο¼Ò»ÏÂÏÂͼ ¡£´ÓͼÖпÉÒÔ´ó¸Å¿´µ½£¬ÓÐÒ»¸ö Route ³äµ±Íø¹ØµÄ½ÇÉ«£¬µ±·þÎñ¸±±¾ÊýΪ
0 ʱ£¬×Ô¶¯½«ÇëÇóת·¢µ½ Activator ×é¼þ£¬Activator »á±£³ÖÇëÇó£¬Í¬Ê± Autoscaler
×é¼þ»á¸ºÔ𽫸±±¾ÊýÀ©ÈÝ£¬Ö®ºó Activator ÔÙ½«ÇëÇóµ¼È뵽ʵ¼ÊµÄ Pod£¬²¢ÇÒÔÚ¸±±¾Êý²»Îª 0
ʱ£¬Route »áÖ±½Ó½«Á÷Á¿¸ºÔؾùºâµ½ Pod£¬²»ÔÙ×ß Activator ×é¼þ¡£ÕâÒ²ÊÇ Knative
ʵÏÖÀäÆô¶¯µÄÒ»¸ö»ù±¾Ë¼Â·¡£

ÔÚ¼¯³ÉʹÓà Istio ²¿Êðʱ£¬Route ĬÈϲÉÓõÄÊÇ Istio Ingress Gateway
ʵÏÖ£¬´ó¸ÅÔÚ Knative 0.6 °æ±¾Ö®Ç°£¬ÎÒÃÇ¿ÉÒÔ·¢ÏÖ£¬Route µÄÁ÷Á¿×ª·¢±¾ÖÊÉÏÊÇÓÉ Istio
virtualservice£¨vs£©¿ØÖÆ¡£¸±±¾ÊýΪ 0 ʱ£¬vs ÈçÏÂËùʾ£¬ÆäÖÐ destination
Ö¸ÏòµÄÊÇ Activator ×é¼þ¡£´Ëʱ Activator »á°ïÖúת·¢ÀäÆô¶¯Ê±µÄÇëÇó¡£
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: route-f8c50d56-3f47-11e9-9a9a-08002715c9e6
spec:
gateways:
- knative-ingress-gateway
- mesh
hosts:
- helloworld-go.default.example.com
- helloworld-go.default.svc.cluster.local
http:
- appendHeaders:
route:
- destination:
host: Activator-Service.knative-serving.svc.cluster.local
port:
number: 80
weight: 100 |
µ±·þÎñ¸±±¾Êý²»Îª 0 Ö®ºó£¬vs ±äΪÈçÏÂËùʾ£¬½« Ingress Gateway µÄÁ÷Á¿Ö±½Óת·¢µ½·þÎñ
Pod ÉÏ¡£
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: route-f8c50d56-3f47-11e9-9a9a-08002715c9e6
spec:
hosts:
- helloworld-go.default.example.com
- helloworld-go.default.svc.cluster.local
http:
- match:
route:
- destination:
host: helloworld-go-2xxcn-Service.default.svc.cluster.local
port:
number: 80
weight: 100 |
ÎÒÃÇ¿ÉÒÔºÜÃ÷ÏԵĿ´³ö£¬Knative ¾ÍÊÇͨ¹ýÐÞ¸Ä vs µÄ destination host À´ÊµÏÖÀäÆô¶¯ÖеÄÁ÷Á¿±£³ÖºÍת·¢¡£
ÏàÐÅĿǰÄãÔÚÍøÉÏÄÜÕÒµ½×ÊÁÏ£¬Ò²»ù±¾ÉÏÍ£ÁôÔڸý׶Ρ£²»¹ý£¬ÓÉÓÚ Knative µÄ¿ìËÙµü´ú£¬ÕâÀïµÄһЩʵÏÖϸ½Ú·ÖÎöÒѾ¹ýʱ¡£
ÏÂÃæÒÔ 0.9 °æ±¾ÎªÀý£¬ÎÒÃÇ×Ðϸ̽¾¿Ò»ÏÂÏÖÓеÄʵÏÖ·½Ê½£¬ºÍ¹ØÓÚ Knative Á÷Á¿µÄÕæÕýÃØÃÜ¡£
3¡¢¸´ÔÓµ«ÊǸüÓÅÒìµÄаæÁ÷Á¿»úÖÆ
¼øÓÚ¹Ù·½Îĵµ²¢Ã»ÓÐ×îеľßÌåʵÏÖ»úÖÆ½éÉÜ£¬ÎÒÃÇ´´½¨Ò»¸ö¼òµ¥µÄ hello-go ksvc£¬²¢ÒԴ˽øÐзÖÎö¡£ksvc
ÈçÏÂËùʾ£º
apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
name: hello-go
namespace: faas
spec:
template:
spec:
containers:
- image: harbor-yx-jd-dev.yx.netease.com/library/helloworld-go:v0.1
env:
- name: TARGET
value: "Go Sample v1" |
virtualservice µÄ±ä»¯
±ÊÕߵĻ·¾³¿É¼òµ¥µÄÈÏΪÊÇÒ»¸ö±ê×¼µÄ Istio ²¿Êð£¬Serverless Íø¹ØÎª Istio Ingress
Gateway£¬ËùÒÔ´´½¨Íê ksvc ºó£¬ÎªÁËÑéÖ¤·þÎñÊÇ·ñ¿ÉÒÔÕý³£ÔËÐУ¬ÐèÒª·¢ËÍ http ÇëÇóÖÁÍø¹Ø¡£Gateway
×ÊÔ´ÒѾÔÚ²¿Êð Knative µÄʱºò´´½¨£¬ÕâÀïÎÒÃÇÖ»ÐèÒª¹ØÐÄ vs¡£
ÔÚ·þÎñ¸±±¾ÊýΪ 0 µÄʱºò£¬Knative ¿ØÖÆÆ÷´´½¨µÄ vs ¹Ø¼üÅäÖÃÈçÏ£º
spec:
gateways:
- knative-serving/cluster-local-gateway
- knative-serving/knative-ingress-gateway
hosts:
- hello-go.faas
- hello-go.faas.example.com
- hello-go.faas.svc
- hello-go.faas.svc.cluster.local
- f81497077928a654cf9422088e7522d5.probe.invalid
http:
- match:
- authority:
regex: ^hello-go\.faas\.example\.com(?::\d{1,5})?$
gateways:
- knative-serving/knative-ingress-gateway
- authority:
regex: ^hello-go\.faas(\.svc(\.cluster\.local)?)?(?::\d{1,5})?$
gateways:
- knative-serving/cluster-local-gateway
retries:
attempts: 3
perTryTimeout: 10m0s
route:
- destination:
host: hello-go-fpmln.faas.svc.cluster.local
port:
number: 80 |
vs Ö¸¶¨ÁËÒѾ´´½¨ºÃµÄ gw£¬Í¬Ê± destination Ö¸ÏòµÄÊÇÒ»¸ö Service ÓòÃû¡£Õâ¸ö
Service ¾ÍÊÇ Knative ĬÈÏ×Ô¶¯´´½¨µÄ hello-go ·þÎñµÄ Service¡£Ï¸ÐĵÄÎÒÃÇÓÖ·¢ÏÖ
vs µÄ ownerReferences Ö¸ÏòÁËÒ»¸ö Knative µÄ CRD ingress.networking.internal.knative.dev£º
ownerReferences:
- apiVersion: networking.internal.knative.dev/v1alpha1
blockOwnerDeletion: true
controller: true
kind: Ingress
name: hello-go
uid: 4a27a69e-5b9c-11ea-ae53-fa163ec7c05f |
¸ù¾ÝÃû×Ö¿ÉÒÔ¿´µ½ÕâÊÇÒ»¸ö Knative ÄÚ²¿Ê¹ÓÃµÄ CRD£¬¸Ã
CRD µÄÄÚÈÝÆäʵºÍ vs ±È½ÏÀàËÆ£¬Í¬Ê± ingress.networking.internal.knative.dev
µÄ ownerReferences Ö¸ÏòÁËÎÒÃÇÊìϤµÄ route£¬×ܽáÏÂÀ´¾ÍÊÇ£º
route -> kingress(ingress.networking.internal.knative.dev)
-> vs |
ÔÚÍø¹ØÕâÒ»²ãÉæ¼°µ½µÄ CRD ×ÊÔ´¾ÍÊÇÈçÉÏÕâЩ¡£ÕâÀï kingress µÄÒâÒåÔÚÓÚÔö¼ÓÒ»²ã³éÏó£¬Èç¹ûÎÒÃÇʹÓõÄÊÇ
Gloo µÈÆäËûÍø¹Ø£¬Ôò»á½« kingress ת»»³ÉÏàÓ¦µÄÍø¹Ø×ÊÔ´ÅäÖá£×îеİ汾ÖУ¬¸ºÔð kingress
µ½ Istio vs µÄ¿ØÖÆÆ÷²¿·Ö´úÂëÒѾ¶ÀÁ¢³öÒ»¸öÏîÄ¿£¬¿É¼ûÈç½ñµÄ Knative ¶Ô Istio
ÒѾ²»ÊÇÇ¿ÒÀÀµ¡£
ÏÖÔÚ£¬ÎÒÃÇÒѾÁ˽⵽ Serverless Íø¹ØÊÇÓÉ Knative ¿ØÖÆÆ÷×îÖÕÉú³ÉµÄ vs ÉúЧµ½
Istio Ingress Gateway ÉÏ£¬ÎªÁËÑéÖ¤ÎÒÃǸղŲ¿ÊðµÄ·þÎñÊÇ·ñ¿ÉÒÔÕý³£µÄÔËÐУ¬¼òµ¥µÄÓÃ
curl ÃüÁîÊÔÑéһϡ£ºÍËùÓеÄÍø¹Ø»òÕ߸ºÔؾùºâÆ÷Ò»Ñù£¬¶ÔÓÚ 7 ²ã http ·ÃÎÊ£¬ÎÒÃÇÐèÒªÔÚ Header
Àï¼ÓÓòÃû Host£¬ÓÃÓÚÁ÷Á¿×ª·¢µ½¾ßÌåµÄ·þÎñ¡£ÔÚÉÏÃæµÄ vs ÖÐÒѾ¿ÉÒÔ¿´µ½¶ÔÍâÓòÃûºÍÄÚ²¿ Service
ÓòÃû¾ùÒѾÅäÖá£ËùÒÔ£¬Ö»ÐèÒª£º
curl -v -H'Host:hello-go.faas.example.com'
<IngressIP>:<Port> |
ÆäÖУ¬IngressIP ¼´Íø¹ØÊµÀý¶ÔÍⱩ¶µÄ IP¡£
¶ÔÓÚÀäÆô¶¯À´Ëµ£¬Ä¿Ç°µÄ Knative ÐèÒªµÈÊ®¼¸Ã룬¼´»áÊÕµ½ÇëÇ󡣸ù¾Ý֮ǰÀϰ汾µÄ¾Ñ飬Õâ¸öʱºò
vs »á±»¸üУ¬destination Ö¸Ïò hello-go µÄ Service¡£²»¹ý£¬ÏÖÔÚÎÒÃÇʵ¼Ê·¢ÏÖ£¬vs
ûÓÐÈκα仯£¬ÈÔȻָÏòÁË·þÎñµÄ Service¡£
¶Ô±ÈÀϰ汾ÖзþÎñ¸±±¾ÊýΪ 0 ʱ£¬Æäʵ vs µÄ destination Ö¸ÏòµÄÊÇ Activator
×é¼þµÄ¡£µ«ÏÖÔÚ£¬²»¹Ü·þÎñ¸±±¾ÊýÈçºÎ±ä»¯£¬vs Ò»Ö±²»±ä¡£õèõÎÖ»ÄÜ´Ó destination µÄ Service
ÓòÃûÈëÊÖ¡£
revision service ̽Ë÷
´´½¨ ksvc ºó£¬Knative »á°ïÎÒÃÇ×Ô¶¯´´½¨ Service ÈçÏÂËùʾ¡£
$ kubectl -n
faas get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
hello-go ExternalName <none> cluster-local-gateway.istio-system.svc.cluster.local
<none>
hello-go-fpmln ClusterIP 10.178.4.126 <none>
80/TCP
hello-go-fpmln-m9mmg ClusterIP 10.178.5.65 <none>
80/TCP,8022/TCP
hello-go-fpmln-metrics ClusterIP 10.178.4.237
<none> 9090/TCP,9091/TCP |
hello-go Service ÊÇÒ»¸ö ExternalName Service£¬×÷ÓÃÊǽ« hello-go
µÄ Service ÓòÃûÔö¼ÓÒ»¸ö dns CNAME ±ðÃû¼Ç¼£¬Ö¸ÏòÍø¹ØµÄ Service ÓòÃû¡£
¸ù¾Ý Service µÄ annotation ÎÒÃÇ¿ÉÒÔ·¢ÏÖ£¬Knative ¶Ô hello-go-fpmln¡¢hello-go-fpmln-m9mmg
¡¢hello-go-fpmln-metrics ÕâÈý¸ö Service µÄ¶¨Î»·Ö±ðΪ public
Service¡¢private Service ºÍ metric Service£¨×îа汾ÒѾ½« private
ºÍ metrics Service ºÏ²¢£©¡£
private Service ºÍ metric Service Æäʵ²»ÄÑÀí½â¡£ÎÊÌâµÄ¹Ø¼ü¾ÍÔÚÕâÀïµÄ
public Service£¬×ÐϸÑо¿ hello-go-fpmln Service£¬ÎÒÃÇ¿ÉÒÔ·¢ÏÖÕâÊÇÒ»¸öûÓÐ
labelSelector µÄ Service£¬ËüµÄ Endpoint ²»ÊÇ kubernetes
×Ô¶¯´´½¨µÄ£¬ÐèÒª¶îÍâÉú³É¡£
ÔÚ·þÎñ¸±±¾ÊýΪ 0 ʱ£¬²é¿´Ò»Ï Service ¶ÔÓ¦µÄ Endpoint£¬ÈçÏÂËùʾ£º
$ kubectl -n
faas get ep
NAME ENDPOINTS AGE
hello-go-fpmln 172.31.16.81:8012
hello-go-fpmln-m9mmg 172.31.16.121:8012,172.31.16.121:8022
hello-go-fpmln-metrics 172.31.16.121:9090,172.31.16.121:9091 |
ÆäÖУ¬public Service µÄ Endpoint IP ÊÇ Knative Activator
µÄ Pod IP£¬Êµ¼Ê·¢ÏÖ Activator µÄ¸±±¾ÊýÔ½¶àÕâÀïÒ²»áÏàÓ¦µÄÔö¼Ó¡£²¢ÇÒÓÉÉÏÃæµÄ·ÖÎö¿ÉÒÔ¿´µ½£¬vs
µÄ destination Ö¸ÏòµÄ¾ÍÊÇ public Service¡£
ÊäÈ뼸´Î curl ÃüÁîÄ£ÄâһϠhttp ÇëÇó£¬ËäÈ»¸±±¾Êý´Ó 0 ¿ªÊ¼Ôö¼Óµ½ 1 ÁË£¬µ«ÊÇÕâÀïµÄ
Endpoint ȴûÓб仯£¬ÈÔȻΪ Activator Pod IP¡£½Ó×ÅʹÓà hey À´Ñ¹²âһϣº
./hey_linux_amd64
-n 1000000 -c 300 -m GET -host helloworld-go.faas.example.com
http://<IngressIP>:80 |
·¢ÏÖ Endpoint ±ä»¯ÁË£¬Í¨¹ý¶Ô±È·þÎñµÄ Pod IP£¬ÒѾ±ä³ÉÁËÐÂÆô¶¯µÄ·þÎñ Pod IP£¬²»ÔÙÊÇ
Activator Pod µÄ IP¡£
$ kubectl -n
faas get ep
NAME ENDPOINTS
helloworld-go-mpk25 172.31.16.121:8012
hello-go-fpmln-m9mmg 172.31.16.121:8012,172.31.16.121:8022
hello-go-fpmln-metrics 172.31.16.121:9090,172.31.16.121:9091 |
ÔÀ´£¬ÏÖÔÚа汾µÄÀäÆô¶¯Á÷Á¿×ª·¢»úÖÆÒѾ²»ÔÙÊÇͨ¹ýÐÞ¸Ä vs À´¸Ä±äÍø¹ØµÄÁ÷Á¿×ª·¢ÅäÖÃÁË£¬¶øÊÇÖ±½Ó¸üзþÎñµÄ
public Service ºó¶Ë Endpoint£¬´Ó¶øÊµÏÖ½«Á÷Á¿´Ó Activator ת·¢µ½Êµ¼ÊµÄ·þÎñ
Pod ÉÏ¡£
ͨ¹ý½«Á÷Á¿µÄת·¢¹¦ÄÜÄÚ¾Ûµ½ Service/Endpoint ²ã£¬Ò»·½Ãæ¼õСÁËÍø¹ØµÄÅäÖøüÐÂѹÁ¦£¬Ò»·½Ãæ
Knative ¿ÉÒÔÔÚ¶Ô½Ó¸÷ÖÖ²»Í¬µÄÍø¹ØÊ±µÄʵÏÖʱ¸ü¼Ó½âñî£¬Íø¹Ø²ã²»ÔÙÐèÒª¹ØÐÄÀäÆô¶¯Ê±µÄÁ÷Á¿×ª·¢»úÖÆ¡£
Á÷Á¿Â·¾¶
ÔÙÉîÈë´ÓÉÏÊöµÄÈý¸ö Service ÈëÊÖÑо¿£¬ËüÃÇµÄ ownerReference
ÊÇ serverlessservice.networking.internal . knative
.dev(sks)£¬¶ø sks µÄ ownerReference ÊÇ podautoscaler.autoscaling.internal.knative.dev(kpa)¡£
ÔÚѹ²â¹ý³ÌÖÐͬÑù·¢ÏÖ£¬sks »áÔÚÀäÆô¶¯¹ýºó£¬»á´Ó Proxy ģʽ±äΪ Serve ģʽ£º
$ kubectl -n
faas get sks
NAME MODE SERVICENAME PRIVATESERVICENAME READY
REASON
hello-go-fpmln Proxy hello-go-fpmln hello-go-fpmln-m9mmg
True |
$ kubectl -n
faas get sks
NAME MODE SERVICENAME PRIVATESERVICENAME READY
REASON
hello-go-fpmln Serve hello-go-fpmln hello-go-fpmln-m9mmg
True |
ÕâÒ²Òâζ×Å£¬µ±Á÷Á¿´Ó Activator µ¼ÈëµÄʱºò£¬sks Ϊ Proxy ģʽ£¬·þÎñÕæÕýÆô¶¯ÆðÀ´ºó»á±ä³É
Serve ģʽ£¬Íø¹ØÁ÷Á¿Ö±½ÓÁ÷Ïò·þÎñ Pod¡£
´ÓÃû³ÆÉÏÒ²¿ÉÒÔ¿´µ½£¬sks ºÍ kpa ¾ùΪ Knative ÄÚ²¿ CRD£¬Êµ¼ÊÉÏÒ²ÊÇÓÉÓÚ Knative
Éè¼ÆÉÏ¿ÉÒÔÖ§³Ö×Ô¶¨ÒåµÄÀ©ËõÈÝ·½Ê½ºÍÖ§³Ö Kubernetes HPA Óйأ¬ÊµÏÖ¸ü¸ßÒ»²ãµÄ³éÏó¡£
ÏÖÔÚΪֹ£¬ÎÒÃÇ¿ÉÒÔÊáÀí Knative µÄ¾ø´ó²¿·Ö CRD µÄ¹ØÏµÈçÏÂͼËùʾ£º

Ò»¸ö¸ü¸´ÔÓµÄʵ¼ÊʵÏּܹ¹Í¼ÈçÏÂËùʾ¡£

¼òµ¥À´Ëµ£¬·þÎñ¸±±¾ÊýΪ 0 ʱ£¬Á÷Á¿Â·¾¶Îª£º
Íø¹Ø -> public
Service -> Activator |
¾¹ýÀäÆô¶¯ºó£¬¸±±¾ÊýΪ N ʱ£¬Á÷Á¿Â·¾¶Îª£º
Íø¹Ø -> public
Service -> Pod |
µ±È»Á÷Á¿µ½ Pod ºó£¬Êµ¼ÊÄÚ²¿»¹ÓÐ Envoy sidecar Á÷Á¿À¹½Ø£¬Queue-Proxy
sidecar ·´Ïò´úÀí£¬²ÅÔÙµ½Óû§µÄ User Container¡£ÕâÀïµÄ»úÖÆ±³ºóʵÏÖÎÒÃÇ»áÓÐÁíÍâһƪÎÄÕÂÔÙµ¥¶ÀϸÁÄ¡£
4¡¢×ܽá
Knative ±¾ÉíµÄʵÏÖ¿ÉÎ½ÔÆÔÉúÁìÓòÀïµÄÒ»¸ö¼¯´ó³ÉÕߣ¬ÈÚºÏ Kubernetes¡¢Service
Mesh¡¢Serverless Èà Knative ³äÂúÁË÷ÈÁ¦£¬µ«Í¬Ê±Ò²µ¼ÖÂÁËËüµÄ¸´ÔÓÐÔ¡£ÍøÂçÁ÷Á¿µÄÎȶ¨±£ÕÏÊÇ
Serverless ·þÎñÕæÕýÉú²ú¿ÉÓÃÐԵĹؼüÒòËØ£¬Knative Ò²»¹ÔÚ¸ßËٵĸüеü´úÖУ¬ÏàÐÅ Knative
»áÔÚδÀ´¶ÔÍøÂç·½ÃæµÄÐÔÄܺÍÎȶ¨ÐÔͶÈë¸ü¶àµÄÓÅ»¯¡£
|