最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

skywalking容器化部署docker鏡像構(gòu)建k8s從測(cè)試到可用

 更新時(shí)間:2022年03月01日 09:32:52   作者:kl  
這篇文章主要為大家介紹了skywalking容器化部署docker鏡像構(gòu)建k8s從測(cè)試到可用的構(gòu)建部署過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

前言碎語(yǔ)

skywalking是個(gè)非常不錯(cuò)的apm產(chǎn)品,但是在使用過(guò)程中有個(gè)非常蛋疼的問(wèn)題,在基于es的存儲(chǔ)情況下,es的數(shù)據(jù)一有問(wèn)題,就會(huì)導(dǎo)致整個(gè)skywalking web ui服務(wù)不可用,然后需要agent端一個(gè)服務(wù)一個(gè)服務(wù)的停用,然后服務(wù)重新部署后好,全部走一遍。這種問(wèn)題同樣也會(huì)存在skywalking的版本升級(jí)迭代中。而且apm 這種過(guò)程數(shù)據(jù)是允許丟棄的,默認(rèn)skywalking中關(guān)于trace的數(shù)據(jù)記錄只保存了90分鐘。故博主準(zhǔn)備將skywalking的部署容器化,一鍵部署升級(jí)。下文是整個(gè)skywalking 容器化部署的過(guò)程。

目標(biāo):將skywalking的docker鏡像運(yùn)行在k8s的集群環(huán)境中提供服務(wù)

docker鏡像構(gòu)建

FROM registry.cn-xx.xx.com/keking/jdk:1.8
ADD apache-skywalking-apm-incubating/  /opt/apache-skywalking-apm-incubating/
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime \
    && echo 'Asia/Shanghai' >/etc/timezone \
    && chmod +x /opt/apache-skywalking-apm-incubating/config/setApplicationEnv.sh \
    && chmod +x /opt/apache-skywalking-apm-incubating/webapp/setWebAppEnv.sh \
    && chmod +x /opt/apache-skywalking-apm-incubating/bin/startup.sh \
    && echo "tail -fn 100 /opt/apache-skywalking-apm-incubating/logs/webapp.log" >> /opt/apache-skywalking-apm-incubating/bin/startup.sh

EXPOSE 8080 10800 11800 12800
CMD /opt/apache-skywalking-apm-incubating/config/setApplicationEnv.sh \
     && sh /opt/apache-skywalking-apm-incubating/webapp/setWebAppEnv.sh \
     && /opt/apache-skywalking-apm-incubating/bin/startup.sh

在編寫Dockerfile時(shí)需要考慮幾個(gè)問(wèn)題:skywalking中哪些配置需要?jiǎng)討B(tài)配置(運(yùn)行時(shí)設(shè)置)?怎么保證進(jìn)程一直運(yùn)行(skywalking 的startup.sh和tomcat中 的startup.sh類似)?

application.yml

#cluster:
#  zookeeper:
#    hostPort: localhost:2181
#    sessionTimeout: 100000
naming:
  jetty:
    #OS real network IP(binding required), for agent to find collector cluster
    host: 0.0.0.0
    port: 10800
    contextPath: /
cache:
#  guava:
  caffeine:
remote:
  gRPC:
    # OS real network IP(binding required), for collector nodes communicate with each other in cluster. collectorN --(gRPC) --> collectorM
    host: #real_host
    port: 11800
agent_gRPC:
  gRPC:
    #os real network ip(binding required), for agent to uplink data(trace/metrics) to collector. agent--(grpc)--> collector
    host: #real_host
    port: 11800
    # Set these two setting to open ssl
    #sslCertChainFile: $path
    #sslPrivateKeyFile: $path

    # Set your own token to active auth
    #authentication: xxxxxx
agent_jetty:
  jetty:
    # OS real network IP(binding required), for agent to uplink data(trace/metrics) to collector through HTTP. agent--(HTTP)--> collector
    # SkyWalking native Java/.Net/node.js agents don't use this.
    # Open this for other implementor.
    host: 0.0.0.0
    port: 12800
    contextPath: /
analysis_register:
  default:
analysis_jvm:
  default:
analysis_segment_parser:
  default:
    bufferFilePath: ../buffer/
    bufferOffsetMaxFileSize: 10M
    bufferSegmentMaxFileSize: 500M
    bufferFileCleanWhenRestart: true
ui:
  jetty:
    # Stay in `localhost` if UI starts up in default mode.
    # Change it to OS real network IP(binding required), if deploy collector in different machine.
    host: 0.0.0.0
    port: 12800
    contextPath: /
storage:
  elasticsearch:
    clusterName: #elasticsearch_clusterName
    clusterTransportSniffer: true
    clusterNodes: #elasticsearch_clusterNodes
    indexShardsNumber: 2
    indexReplicasNumber: 0
    highPerformanceMode: true
    # Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
    bulkActions: 2000 # Execute the bulk every 2000 requests
    bulkSize: 20 # flush the bulk every 20mb
    flushInterval: 10 # flush the bulk every 10 seconds whatever the number of requests
    concurrentRequests: 2 # the number of concurrent requests
    # Set a timeout on metric data. After the timeout has expired, the metric data will automatically be deleted.
    traceDataTTL: 2880 # Unit is minute
    minuteMetricDataTTL: 90 # Unit is minute
    hourMetricDataTTL: 36 # Unit is hour
    dayMetricDataTTL: 45 # Unit is day
    monthMetricDataTTL: 18 # Unit is month
#storage:
#  h2:
#    url: jdbc:h2:~/memorydb
#    userName: sa
configuration:
  default:
    #namespace: xxxxx
    # alarm threshold
    applicationApdexThreshold: 2000
    serviceErrorRateThreshold: 10.00
    serviceAverageResponseTimeThreshold: 2000
    instanceErrorRateThreshold: 10.00
    instanceAverageResponseTimeThreshold: 2000
    applicationErrorRateThreshold: 10.00
    applicationAverageResponseTimeThreshold: 2000
    # thermodynamic
    thermodynamicResponseTimeStep: 50
    thermodynamicCountOfResponseTimeSteps: 40
    # max collection's size of worker cache collection, setting it smaller when collector OutOfMemory crashed.
    workerCacheMaxSize: 10000
#receiver_zipkin:
#  default:
#    host: localhost
#    port: 9411
#    contextPath: /

webapp.yml

server:
  port: 8080
collector:
  path: /graphql
  ribbon:
    ReadTimeout: 10000
    listOfServers: #real_host:10800
security:
  user:
    admin:
      password: #skywalking_password

動(dòng)態(tài)配置:密碼,grpc等需要綁定主機(jī)的ip都需要運(yùn)行時(shí)設(shè)置,這里我們?cè)趩?dòng)skywalking的startup.sh只之前,先執(zhí)行了兩個(gè)設(shè)置配置的腳本,通過(guò)k8s在運(yùn)行時(shí)設(shè)置的環(huán)境變量來(lái)替換需要?jiǎng)討B(tài)配置的參數(shù)

setApplicationEnv.sh

#!/usr/bin/env sh
sed -i "s/#elasticsearch_clusterNodes/${elasticsearch_clusterNodes}/g" /opt/apache-skywalking-apm-incubating/config/application.yml
sed -i "s/#elasticsearch_clusterName/${elasticsearch_clusterName}/g" /opt/apache-skywalking-apm-incubating/config/application.yml
sed -i "s/#real_host/${real_host}/g" /opt/apache-skywalking-apm-incubating/config/application.yml

setWebAppEnv.sh

#!/usr/bin/env sh
sed -i "s/#skywalking_password/${skywalking_password}/g" /opt/apache-skywalking-apm-incubating/webapp/webapp.yml
sed -i "s/#real_host/${real_host}/g" /opt/apache-skywalking-apm-incubating/webapp/webapp.yml

保持進(jìn)程存在:通過(guò)在skywalking 啟動(dòng)腳本startup.sh末尾追加"tail -fn 100 /opt/apache-skywalking-apm-incubating/logs/webapp.log",來(lái)讓進(jìn)程保持運(yùn)行,并不斷輸出webapp.log的日志

Kubernetes中部署

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: skywalking
  namespace: uat
spec:
  replicas: 1
  selector:
    matchLabels:
      app: skywalking
  template:
    metadata:
      labels:
        app: skywalking
    spec:
      imagePullSecrets:
      - name: registry-pull-secret
      nodeSelector:
         apm: skywalking
      containers:
      - name: skywalking
        image: registry.cn-xx.xx.com/keking/kk-skywalking:5.2
        imagePullPolicy: Always
        env:
        - name: elasticsearch_clusterName
          value: elasticsearch
        - name: elasticsearch_clusterNodes
          value: 172.16.16.129:31300
        - name: skywalking_password
          value: xxx
        - name: real_host
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        resources:
          limits:
            cpu: 1000m
            memory: 4Gi
          requests:
            cpu: 700m
            memory: 2Gi

---
apiVersion: v1
kind: Service
metadata:
  name: skywalking
  namespace: uat
  labels:
    app: skywalking
spec:
  selector:
    app: skywalking
  ports:
  - name: web-a
    port: 8080
    targetPort: 8080
    nodePort: 31180
  - name: web-b
    port: 10800
    targetPort: 10800
    nodePort: 31181
  - name: web-c
    port: 11800
    targetPort: 11800
    nodePort: 31182
  - name: web-d
    port: 12800
    targetPort: 12800
    nodePort: 31183
  type: NodePort

Kubernetes部署腳本中唯一需要注意的就是env中關(guān)于pod ip的獲取,skywalking中有幾個(gè)ip必須綁定容器的真實(shí)ip,這個(gè)地方可以通過(guò)環(huán)境變量設(shè)置到容器里面去

文末結(jié)語(yǔ)

整個(gè)skywalking容器化部署從測(cè)試到可用大概耗時(shí)1天,其中花了個(gè)多小時(shí)整了下譚兄的skywalking-docker鏡像(https://hub.docker.com/r/wutang/skywalking-docker/),發(fā)現(xiàn)有個(gè)腳本有權(quán)限問(wèn)題(譚兄反饋已解決,還沒(méi)來(lái)的及測(cè)試),以及有幾個(gè)地方自己不是很好控制,便build了自己的docker鏡像,其中最大的問(wèn)題還是解決集群中網(wǎng)絡(luò)通訊的問(wèn)題,一開(kāi)始我把skywalking中的服務(wù)ip都設(shè)置為0.0.0.0,然后通過(guò)集群的nodePort映射出來(lái),這個(gè)時(shí)候的agent通過(guò)集群ip+31181是可以訪問(wèn)到naming服務(wù)的,然后通過(guò)naming服務(wù)獲取到的collector gRPC服務(wù)缺變成了0.0.0.0:11800, 這個(gè)地址agent肯定訪問(wèn)不到collector的,后面通過(guò)綁定pod ip的方式解決了這個(gè)問(wèn)題。

以上就是skywalking容器化部署docker鏡像構(gòu)建k8s從測(cè)試到可用的詳細(xì)內(nèi)容,更多關(guān)于skywalking容器化部署docker鏡像構(gòu)建k8s的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Docker自定義網(wǎng)絡(luò)詳細(xì)介紹

    Docker自定義網(wǎng)絡(luò)詳細(xì)介紹

    大家好,本篇文章主要講的是Docker自定義網(wǎng)絡(luò)詳細(xì)介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Docker下安裝zookeeper(單機(jī)和集群)

    Docker下安裝zookeeper(單機(jī)和集群)

    這篇文章主要介紹了Docker下安裝zookeeper(單機(jī)和集群),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Docker私有倉(cāng)庫(kù)管理和刪除本地倉(cāng)庫(kù)中的鏡像

    Docker私有倉(cāng)庫(kù)管理和刪除本地倉(cāng)庫(kù)中的鏡像

    這篇文章主要介紹了Docker私有倉(cāng)庫(kù)管理和刪除本地倉(cāng)庫(kù)中的鏡像,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • Docker 7 docker在阿里云的使用詳解

    Docker 7 docker在阿里云的使用詳解

    這篇文章主要介紹了Docker 7 docker在阿里云的使用詳解的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • 使用Docker容器部署Vue程序

    使用Docker容器部署Vue程序

    這篇文章介紹了使用Docker容器部署Vue程序的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • 詳解docker nginx 容器啟動(dòng)掛載到本地

    詳解docker nginx 容器啟動(dòng)掛載到本地

    這篇文章主要介紹了詳解docker nginx 容器啟動(dòng)掛載到本地,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 使用docker極簡(jiǎn)打包java.jar鏡像并啟動(dòng)的操作步驟

    使用docker極簡(jiǎn)打包java.jar鏡像并啟動(dòng)的操作步驟

    這篇文章主要介紹了用docker極簡(jiǎn)打包java.jar鏡像并啟動(dòng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • Docker配置HTTP/HTTPS代理的方法

    Docker配置HTTP/HTTPS代理的方法

    本篇文章主要介紹了Docker配置HTTP/HTTPS代理的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Docker目錄映射方式

    Docker目錄映射方式

    總結(jié)了一些常用的Docker命令,包括查看、停止、重啟和刪除容器等操作,幫助用戶更好地管理容器
    2024-11-11
  • Windows10安裝WSL2 Ubuntu20.04并設(shè)置docker環(huán)境的方法

    Windows10安裝WSL2 Ubuntu20.04并設(shè)置docker環(huán)境的方法

    這篇文章主要介紹了Windows10安裝WSL2 Ubuntu20.04并設(shè)置docker環(huán)境的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05

最新評(píng)論

阜康市| 金阳县| 临漳县| 正安县| 红安县| 梓潼县| 三江| 娄底市| 红河县| 循化| 裕民县| 博湖县| 陈巴尔虎旗| 福建省| 新邵县| 四子王旗| 龙江县| 嵊州市| 海门市| 科尔| 工布江达县| 灌云县| 当雄县| 东阿县| 广灵县| 什邡市| 同江市| 府谷县| 柏乡县| 汉源县| 酒泉市| 丹阳市| 遂昌县| 陇西县| 新巴尔虎右旗| 尚义县| 阿瓦提县| 宜宾县| 建湖县| 晋宁县| 崇信县|