免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

Skywalking Swck Agent注入實現(xiàn)分析

項目地址:【Skywalking Swck Agent注入實現(xiàn)分析】GitHub - apache/skywalking-swck: Apache SkyWalking Cloud on Kubernetes
項目簡介:A bridge project between Apache SkyWalking and Kubernetes.SWCK is a platform for the SkyWalking user that provisions, upgrades, maintains SkyWalking relevant components, and makes them work natively on Kubernetes.skywalking-swck是一個在skywalking和kubernetes之間架起一座橋梁性質(zhì)的項目 。可以給用戶提供skywalking相關(guān)組件及后期升級、維護 。讓他們使用起來更加云原生 。
項目特性

  • Java Agent Injector: Inject the java agent into the application pod natively.
    • Inject the java agent into the application pod.
    • Leverage a global configuration to simplify the agent and injector setup.
    • Use the annotation to customize specific workloads.
    • Synchronize injecting status to JavaAgent CR for monitoring purposes.
  • Operator: Provision and maintain SkyWalking backend components.
  • Custom Metrics Adapter: Provides custom metrics coming from SkyWalking OAP cluster for autoscaling by Kubernetes HPA
  • 注入Java Agent: 以更加云原生的試注入java agent
    • 將java agent注入到應(yīng)用pod
    • 可以全局化配置,簡化agent注入操作
    • 使用annotation自定義一些配置
    • 將注入的狀態(tài)同步到JavaAgent這個CR對象,便于監(jiān)控
  • Operator: 提供和維護SkyWalking后端的組件
  • 自定義指標適配: 能夠提供來自于SkyWalking OAP的自定義指標給kubernetes HPA,以便自動擴縮容
使用skywalking-swck/java-agent-injector.md at master · apache/skywalking-swck
  1. 下載并安裝Operator
  2. 創(chuàng)建ConfigMap/SwAgent等全局配置Annotations > SwAgent > Configmap (Deprecated) > Default Configmap (Deprecated)
  3. 接入應(yīng)用配置label/annotationsskywalking agent inject on kubernetes
原理概述當kubectl apply 一個 deployment資源后,k8s會創(chuàng)建pod,此時k8s根據(jù)mutatingwebhookconfigurations資源配置(配置了監(jiān)控的資源以及webhook server信息),調(diào)用相應(yīng)的webhook server,webhook server會進行處理,在pod yaml中注入initContainer配置,使業(yè)務(wù)容器與initContainer容器共享skywalking agent目錄,并且配置JAVA_TOOL_OPTIONS環(huán)境變量值為"-javaagent:/sky/agent/skywalking-agent.jar=agent.service_name=xxxx",這樣JVM啟動時,會附加上javaagent,以達到目的 。
詳述
  1. 首先我們來看一下MutatingWebhookConfiguration和 ValidatingWebhookConfiguration資源查看kubectl explain 對這兩個資源的描述
MutatingWebhookConfiguration describes the configuration of and admissionwebhook that accept or reject and may change the object.ValidatingWebhookConfiguration describes the configuration of and admissionwebhook that accept or reject and object without changing it.簡而言之,這兩種資源都是準入控制器(Admission Controller)的兩種實現(xiàn),都能控制是否接受還是拒絕對資源對象的變化,但不同的是,MutatingWebhookConfiguration可以改變資源對象,而ValidatingWebhookConfiguration不可以,可以參看搞懂 Kubernetes 準入控制(Admission Controller)詳細了解 。2. swck就是利用MutatingWebhookConfiguration實現(xiàn)了對pod的修改,我們來看下swck中的定義
apiVersion: admissionregistration.k8s.io/v1kind: MutatingWebhookConfigurationmetadata:annotations:cert-manager.io/inject-ca-from: skywalking-swck-system/skywalking-swck-serving-certname: skywalking-swck-mutating-webhook-configurationwebhooks:- admissionReviewVersions:- v1clientConfig:service:name: skywalking-swck-webhook-servicenamespace: skywalking-swck-systempath: /mutate-v1-podfailurePolicy: Failname: mpod.kb.ionamespaceSelector:matchLabels:swck-injection: enabledrules:- apiGroups:- ""apiVersions:- v1operations:- CREATE- UPDATEresources:- podssideEffects: None從這段定義中可以看出,當帶有標簽swck-injection: enabled的Namespace下的POD資源有CREATE或者UPDATE操作時,將會調(diào)用path: /mutate-v1-pod 。3. 在swck項目中的operator/man.go中找到此URL

經(jīng)驗總結(jié)擴展閱讀