kubernetes部署 skywalking 6.10

  运维

项目主页

ns

apiVersion: v1
kind: Namespace
metadata:
  name: skywalking
  labels:
    name: skywalking

Deployment busybox

apiVersion: apps/v1
kind: Deployment
metadata:
  name: busybox
  namespace: skywalking
spec:
  selector:
    matchLabels:
      app: busybox
  replicas: 1
  template:
    metadata:
      labels:
        app: busybox
    spec:
      containers:
      - name: busybox
        image: busybox
        resources:
          requests:
            cpu: 1000m
#            ephemeral-storage: 100Ki
            memory: 1Gi
          limits:
            cpu: 1000m
#            ephemeral-storage: 100Ki
            memory: 1Gi
        command:
        - sleep
        - "3600"
        imagePullPolicy: Always
        ports:
        - containerPort: 80
          protocol: TCP

Deployment apm-eureka

apiVersion: apps/v1
kind: Deployment
metadata:
  name: apm-eureka
  labels:
    deploy: apm-eureka
spec:
  replicas: 1
  selector:
    matchLabels:
      app: apm-eureka
  template:
    metadata:
      name: apm-eureka
      labels:
        app: apm-eureka
    spec:
      initContainers:
        - name: sidecar
          image: evanxuhe/skywalking-agent-sidecar:6.1.0 # 容器镜像,包含静态资源文件
          imagePullPolicy: IfNotPresent
          command: ["cp", "-r", "/data/agent", "/sidecar"]
          volumeMounts:
            - name: sidecar
              mountPath: /sidecar
      containers:
        - name: apm-eureka
          image: evanxuhe/apm-eureka:6.1.0
          imagePullPolicy: IfNotPresent
          env:
            - name: JAVA_OPTS
              value: -javaagent:/sidecar/agent/skywalking-agent.jar
            - name: SW_AGENT_NAME
              value: apm-eureka
            - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
              value: oap:11800
          ports:
            - name: http
              containerPort: 8761
          volumeMounts:
            - name: sidecar
              mountPath: /sidecar
      volumes:
        - name: sidecar  #共享agent文件夹
          emptyDir: {}
      restartPolicy: Always

Deployment apm-item

apiVersion: apps/v1
kind: Deployment
metadata:
  name: apm-item
  labels:
    app: apm-item
spec:
  replicas: 1
  selector:
    matchLabels:
      app: apm-item
  template:
    metadata:
      name: apm-item
      labels:
        app: apm-item
    spec:
      initContainers:
        - name: sidecar
          image: evanxuhe/skywalking-agent-sidecar:6.1.0 # 容器镜像,包含静态资源文件
          imagePullPolicy: IfNotPresent
          command: ["cp", "-r", "/data/agent", "/sidecar"]
          volumeMounts:
            - name: sidecar
              mountPath: /sidecar
      containers:
        - name: apm-item
          image: evanxuhe/apm-item:6.1.0
          imagePullPolicy: IfNotPresent
          env:
            - name: JAVA_OPTS
              value: -javaagent:/sidecar/agent/skywalking-agent.jar
            - name: SW_AGENT_NAME
              value: apm-item
            - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
              value: oap:11800
            - name: EUREKA_HOSTNAME
              value: apm-eureka
            - name: EUREKA_PORT
              value: '8761'
          ports:
            - name: http
              containerPort: 8082
          volumeMounts:
            - name: sidecar
              mountPath: /sidecar
      volumes:
        - name: sidecar  #共享agent文件夹
          emptyDir: {}
      restartPolicy: Always

svc apm-eureka

apiVersion: v1
kind: Service
metadata:
  name: apm-eureka
  namespace: skywalking
  labels:
    service: apm-eureka
spec:
  type: NodePort
  selector:
    app: apm-eureka
  ports:
    - port: 8761
      name: register
      targetPort: 8761
      nodePort: 30092
    - port: 8080
      name: index
      targetPort: 8080
      nodePort: 30093

svc apm-item

apiVersion: v1
kind: Service
metadata:
  name: apm-item
  namespace: skywalking
  labels:
    service: apm-item
spec:
  type: NodePort
  selector:
    app: apm-item
  ports:
    - port: 8082
      name: item
      targetPort: 8082
      nodePort: 30094

rbac skywalking-oap

apiVersion: v1
kind: ServiceAccount
metadata:
  name: skywalking-oap
  namespace: skywalking

---

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: skywalking-oap
  namespace: skywalking
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: skywalking-oap
subjects:
- kind: ServiceAccount
  name: skywalking-oap
  namespace: skywalking

---

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: skywalking
  name: skywalking-oap
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]

cm oap-config elasticsearch:9200

apiVersion: v1
kind: ConfigMap
metadata:
  name: oap-config
  namespace: skywalking
data:
  application.yml: |-
    cluster:
      # standalone:
      # Please check your ZooKeeper is 3.5+, However, it is also compatible with ZooKeeper 3.4.x. Replace the ZooKeeper 3.5+
      # library the oap-libs folder with your ZooKeeper 3.4.x library.
    #  zookeeper:
    #    nameSpace: ${SW_NAMESPACE:""}
    #    hostPort: ${SW_CLUSTER_ZK_HOST_PORT:localhost:2181}
    #    #Retry Policy
    #    baseSleepTimeMs: ${SW_CLUSTER_ZK_SLEEP_TIME:1000} # initial amount of time to wait between retries
    #    maxRetries: ${SW_CLUSTER_ZK_MAX_RETRIES:3} # max number of times to retry
      kubernetes:
        watchTimeoutSeconds: ${SW_CLUSTER_K8S_WATCH_TIMEOUT:60}
        namespace: ${SW_CLUSTER_K8S_NAMESPACE:skywalking}
        labelSelector: ${SW_CLUSTER_K8S_LABEL:app=oap,release=skywalking}
        uidEnvName: ${SW_CLUSTER_K8S_UID:SKYWALKING_COLLECTOR_UID}
    #  consul:
    #    serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
    #     Consul cluster nodes, example: 10.0.0.1:8500,10.0.0.2:8500,10.0.0.3:8500
    #    hostPort: ${SW_CLUSTER_CONSUL_HOST_PORT:localhost:8500}
    core:
      default:
        # Mixed: Receive agent data, Level 1 aggregate, Level 2 aggregate
        # Receiver: Receive agent data, Level 1 aggregate
        # Aggregator: Level 2 aggregate
        role: ${SW_CORE_ROLE:Mixed} # Mixed/Receiver/Aggregator
        restHost: ${SW_CORE_REST_HOST:0.0.0.0}
        restPort: ${SW_CORE_REST_PORT:12800}
        restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/}
        gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0}
        gRPCPort: ${SW_CORE_GRPC_PORT:11800}
        downsampling:
        - Hour
        - Day
        - Month
        # Set a timeout on metric data. After the timeout has expired, the metric data will automatically be deleted.
        recordDataTTL: ${SW_CORE_RECORD_DATA_TTL:90} # Unit is minute
        minuteMetricsDataTTL: ${SW_CORE_MINUTE_METRIC_DATA_TTL:90} # Unit is minute
        hourMetricsDataTTL: ${SW_CORE_HOUR_METRIC_DATA_TTL:36} # Unit is hour
        dayMetricsDataTTL: ${SW_CORE_DAY_METRIC_DATA_TTL:45} # Unit is day
        monthMetricsDataTTL: ${SW_CORE_MONTH_METRIC_DATA_TTL:18} # Unit is month
    storage:
      elasticsearch:
        nameSpace: ${SW_NAMESPACE:""}
        clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:elasticsearch:9200}
        user: ${SW_ES_USER:""}
        password: ${SW_ES_PASSWORD:""}
        indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
        indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
        # Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
        bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:2000} # Execute the bulk every 2000 requests
        bulkSize: ${SW_STORAGE_ES_BULK_SIZE:20} # flush the bulk every 20mb
        flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
        concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
        metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
        segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
      # h2:
      #   driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
      #   url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
      #   user: ${SW_STORAGE_H2_USER:sa}
      #   metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
    #  mysql:
    #    metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
    receiver-sharing-server:
      default:
    receiver-register:
      default:
    receiver-trace:
      default:
        bufferPath: ${SW_RECEIVER_BUFFER_PATH:../trace-buffer/}  # Path to trace buffer files, suggest to use absolute path
        bufferOffsetMaxFileSize: ${SW_RECEIVER_BUFFER_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
        bufferDataMaxFileSize: ${SW_RECEIVER_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
        bufferFileCleanWhenRestart: ${SW_RECEIVER_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
        sampleRate: ${SW_TRACE_SAMPLE_RATE:10000} # The sample rate precision is 1/10000. 10000 means 100% sample in default.
        slowDBAccessThreshold: ${SW_SLOW_DB_THRESHOLD:default:200,mongodb:100} # The slow database access thresholds. Unit ms.
    receiver-jvm:
      default:
    receiver-clr:
      default:
    service-mesh:
      default:
        bufferPath: ${SW_SERVICE_MESH_BUFFER_PATH:../mesh-buffer/}  # Path to trace buffer files, suggest to use absolute path
        bufferOffsetMaxFileSize: ${SW_SERVICE_MESH_OFFSET_MAX_FILE_SIZE:100} # Unit is MB
        bufferDataMaxFileSize: ${SW_SERVICE_MESH_BUFFER_DATA_MAX_FILE_SIZE:500} # Unit is MB
        bufferFileCleanWhenRestart: ${SW_SERVICE_MESH_BUFFER_FILE_CLEAN_WHEN_RESTART:false}
    istio-telemetry:
      default:
    envoy-metric:
      default:
    #receiver_zipkin:
    #  default:
    #    host: ${SW_RECEIVER_ZIPKIN_HOST:0.0.0.0}
    #    port: ${SW_RECEIVER_ZIPKIN_PORT:9411}
    #    contextPath: ${SW_RECEIVER_ZIPKIN_CONTEXT_PATH:/}
    query:
      graphql:
        path: ${SW_QUERY_GRAPHQL_PATH:/graphql}
    alarm:
      default:
    telemetry:
      none:
  log4j2.xml: |-
    <Configuration status="INFO">
        <Appenders>
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout charset="UTF-8" pattern="%d - %c -%-4r [%t] %-5p %x - %m%n"/>
            </Console>
        </Appenders>
        <Loggers>
            <logger name="org.eclipse.jetty" level="INFO"/>
            <logger name="org.apache.zookeeper" level="INFO"/>
            <logger name="org.elasticsearch.common.network.IfConfig" level="INFO"/>
            <logger name="io.grpc.netty" level="INFO"/>
            <logger name="org.apache.skywalking.oap.server.receiver.istio.telemetry" level="DEBUG"/>
            <Root level="INFO">
                <AppenderRef ref="Console"/>
            </Root>
        </Loggers>
    </Configuration>
  alarm-settings.yml: |-
    rules:
      service_resp_time_rule:
        indicator-name: service_resp_time
        include-names:
          - dubbox-provider
          - dubbox-consumer
        threshold: 1000
        op: ">"
        period: 10
        count: 1
    webhooks:
  component-libraries.yml: |-
    Tomcat:
      id: 1
      languages: Java
    HttpClient:
      id: 2
      languages: Java,C#,Node.js
    Dubbo:
      id: 3
      languages: Java
    H2:
      id: 4
      languages: Java
    Mysql:
      id: 5
      languages: Java,C#,Node.js
    ORACLE:
      id: 6
      languages: Java
    Redis:
      id: 7
      languages: Java,C#,Node.js
    Motan:
      id: 8
      languages: Java
    MongoDB:
      id: 9
      languages: Java,C#,Node.js
    Resin:
      id: 10
      languages: Java
    Feign:
      id: 11
      languages: Java
    OKHttp:
      id: 12
      languages: Java
    SpringRestTemplate:
      id: 13
      languages: Java
    SpringMVC:
      id: 14
      languages: Java
    Struts2:
      id: 15
      languages: Java
    NutzMVC:
      id: 16
      languages: Java
    NutzHttp:
      id: 17
      languages: Java
    JettyClient:
      id: 18
      languages: Java
    JettyServer:
      id: 19
      languages: Java
    Memcached:
      id: 20
      languages: Java
    ShardingJDBC:
      id: 21
      languages: Java
    PostgreSQL:
      id: 22
      languages: Java,C#,Node.js
    GRPC:
      id: 23
      languages: Java
    ElasticJob:
      id: 24
      languages: Java
    RocketMQ:
      id: 25
      languages: Java
    httpasyncclient:
      id: 26
      languages: Java
    Kafka:
      id: 27
      languages: Java
    ServiceComb:
      id: 28
      languages: Java
    Hystrix:
      id: 29
      languages: Java
    Jedis:
      id: 30
      languages: Java
    SQLite:
      id: 31
      languages: Java,C#
    h2-jdbc-driver:
      id: 32
      languages: Java
    mysql-connector-java:
      id: 33
      languages: Java
    ojdbc:
      id: 34
      languages: Java
    Spymemcached:
      id: 35
      languages: Java
    Xmemcached:
      id: 36
      languages: Java
    postgresql-jdbc-driver:
      id: 37
      languages: Java
    rocketMQ-producer:
      id: 38
      languages: Java
    rocketMQ-consumer:
      id: 39
      languages: Java
    kafka-producer:
      id: 40
      languages: Java
    kafka-consumer:
      id: 41
      languages: Java
    mongodb-driver:
      id: 42
      languages: Java
    SOFARPC:
      id: 43
      languages: Java
    ActiveMQ:
      id: 44
      languages: Java
    activemq-producer:
      id: 45
      languages: Java
    activemq-consumer:
      id: 46
      languages: Java
    Elasticsearch:
      id: 47
      languages: Java
    transport-client:
      id: 48
      languages: Java
    http:
      id: 49
      languages: Java,C#,Node.js
    rpc:
      id: 50
      languages: Java,C#,Node.js
    RabbitMQ:
      id: 51
      languages: Java
    rabbitmq-producer:
      id: 52
      languages: Java
    rabbitmq-consumer:
      id: 53
      languages: Java
    Canal:
      id: 54
      languages: Java
    Gson:
      id: 55
      languages: Java
    Redisson:
      id: 56
      languages: Java
    AspNetCore:
      id: 3001
      languages: C#
    EntityFrameworkCore:
      id: 3002
      languages: C#
    SqlClient:
      id: 3003
      languages: C#
    CAP:
      id: 3004
      languages: C#
    StackExchange.Redis:
      id: 3005
      languages: C#
    SqlServer:
      id: 3006
      languages: C#
    Npgsql:
      id: 3007
      languages: C#
    MySqlConnector:
      id: 3008
      languages: C#
    EntityFrameworkCore.InMemory:
      id: 3009
      languages: C#
    EntityFrameworkCore.SqlServer:
      id: 3010
      languages: C#
    EntityFrameworkCore.Sqlite:
      id: 3011
      languages: C#
    Pomelo.EntityFrameworkCore.MySql:
      id: 3012
      languages: C#
    Npgsql.EntityFrameworkCore.PostgreSQL:
      id: 3013
      languages: C#
    InMemoryDatabase:
      id: 3014
      languages: C#
    AspNet:
      id: 3015
      languages: C#
    # NoeJS components
    # [4000, 5000) for Node.js agent
    HttpServer:
      id: 4001
      languages: Node.js
    express:
      id: 4002
      languages: Node.js
    Egg:
      id: 4003
      languages: Node.js
    Koa:
      id: 4004
      languages: Node.js
    # Component Server mapping defines the server display names of some components
    # e.g.
    # Jedis is a client library in Java for Redis server
    Component-Server-Mappings:
      mongodb-driver: MongoDB
      rocketMQ-producer: RocketMQ
      rocketMQ-consumer: RocketMQ
      kafka-producer: Kafka
      kafka-consumer: Kafka
      activemq-producer: ActiveMQ
      activemq-consumer: ActiveMQ
      rabbitmq-producer: RabbitMQ
      rabbitmq-consumer: RabbitMQ
      postgresql-jdbc-driver: PostgreSQL
      Xmemcached: Memcached
      Spymemcached: Memcached
      h2-jdbc-driver: H2
      mysql-connector-java: Mysql
      Jedis: Redis
      StackExchange.Redis: Redis
      Redisson: Redis
      SqlClient: SqlServer
      Npgsql: PostgreSQL
      MySqlConnector: Mysql
      EntityFrameworkCore.InMemory: InMemoryDatabase
      EntityFrameworkCore.SqlServer: SqlServer
      EntityFrameworkCore.Sqlite: SQLite
      Pomelo.EntityFrameworkCore.MySql: Mysql
      Npgsql.EntityFrameworkCore.PostgreSQL: PostgreSQL
      transport-client: Elasticsearch

svc oap

apiVersion: v1
kind: Service
metadata:
  name: oap
  namespace: skywalking
  labels:
    service: oap
spec:
  ports:
  - port: 12800
    name: rest
  - port: 11800
    name: grpc
  - port: 1234
    name: page
  selector:
    app: oap

Deployment oap

apiVersion: apps/v1
kind: Deployment
metadata:
  name: oap
  namespace: skywalking
spec:
  replicas: 1
  selector:
    matchLabels:
      app: oap
  template:
    metadata:
      labels:
        app: oap
        release: skywalking
    spec:
      serviceAccountName: skywalking-oap
      initContainers:
      - name: sidecar-init
        image: evanxuhe/skywalking-agent-sidecar:6.1.0 # 容器镜像,包含静态资源文件
        command: ["cp", "-r", "/data/agent", "/sidecar"]
        volumeMounts:
        - name: sidecar
          mountPath: /sidecar
      containers:
      - name: oap
        #image: evanxuhe/skywalking-oap-server:6.1.0
        image: registry.cn-hangzhou.aliyuncs.com/sre_pub/skywalking-oap-server:6.1.0
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 11800
          name: grpc
        - containerPort: 12800
          name: rest
        resources:
          requests:
            memory: 1Gi
          limits:
            memory: 2Gi
        env:
        - name: JAVA_OPTS
          value: -Xms256M -Xmx512M
        #从volume载入配置 否则由于挂载config时 会与镜像内路径冲突 报错read only filesystem 
        - name: SW_L0AD_CONFIG_FILE_FROM_VOLUME
          value: "true"
        # - name: SW_STORAGE
        #   value: elasticsearch
        # - name: SW_STORAGE_ES_CLUSTER_NODES
        #   value: "192.168.78.136:9200"
        # - name: SW_CLUSTER
        #   value: kubernetes
        # - name: SW_CLUSTER_K8S_NAMESPACE
        #   value: skywalking
        # - name: SW_SERVICE_MESH_OFFSET_MAX_FILE_SIZE
        #   value: "200"
        # - name: SW_RECEIVER_BUFFER_DATA_MAX_FILE_SIZE
        #   value: "800"
        # - name: SW_RECEIVER_BUFFER_FILE_CLEAN_WHEN_RESTART
        #   value: "true"
        - name: SKYWALKING_oap_UID
          valueFrom:
            fieldRef:
              fieldPath: metadata.uid
        volumeMounts:
        - name: sidecar
          mountPath: /sidecar
        - name: config
          mountPath: /skywalking/config
      volumes:
      - name: sidecar
        emptyDir: {}
      - name: config
        configMap:
          name: oap-config

Deployment ui

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ui-deployment
  namespace: skywalking
  labels:
    app: ui
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ui
  template:
    metadata:
      labels:
        app: ui
    spec:
      containers:
      - name: ui
        image: apache/skywalking-ui:6.1.0
        ports:
        - containerPort: 8080
          name: page
        resources:
          requests:
            memory: 1Gi
          limits:
            memory: 2Gi
        env:
        - name: SW_OAP_ADDRESS
          value: oap:12800

svc ui

apiVersion: v1
kind: Service
metadata:
  name: ui
  namespace: skywalking
  labels:
    service: ui
spec:
  ports:
  - port: 8080
    name: page
    nodePort: 30095
  type: NodePort
  selector:
    app: ui

3.png
登录:http://172.16.0.12:30095/
用户名admin
密码admin

LEAVE A COMMENT

发表评论前,请选对水果【Apple=苹果、Banana=香蕉、Pineapple=菠萝、Grapes=葡萄】 Pineapple...