基于kubernetes部署jaeger
- jaeger的相关知识:
https://yq.aliyun.com/articles/514488
https://www.jaegertracing.io/docs/1.7/
github上的jaeger: https://github.com/jaegertracing,https://github.com/jaegertracing/jaeger-kubernetes
- 本机的kubernetes环境:
mac + docker(https://docs.docker.com/docker-for-mac/)
- 基于kubernetes的jaeger环境部署
本地部署非all-in-one的jaeger,主要分为以下几个步骤。下述步骤中的code均被验证,且image均来自于docker hub。
- configmap 的部署: configmap.yml
apiVersion: v1 kind: ConfigMap metadata: name: jaeger-configuration labels: app: jaeger jaeger-infra: configuration data: span-storage-type: elasticsearch collector: | es: server-urls: http://elasticsearch:9200 username: elastic password: changeme collector: zipkin: http-port: 9411 query: | es: server-urls: http://elasticsearch:9200 username: elastic password: changeme
2. jaeger query pod的安装: jaeger-query-deployment.yml
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: jaeger-query labels: app: jaeger jaeger-infra: query-deployment spec: replicas: 1 strategy: type: Recreate template: metadata: labels: app: jaeger jaeger-infra: query-pod annotations: prometheus.io/scrape: "true" prometheus.io/port: "16686" spec: containers: - image: jaegertracing/jaeger-query:latest name: jaeger-query args: ["--config-file=/conf/query.yaml"] ports: - containerPort: 16686 protocol: TCP readinessProbe: httpGet: path: "/" port: 16687 volumeMounts: - name: jaeger-configuration-volume mountPath: /conf env: - name: SPAN_STORAGE_TYPE valueFrom: configMapKeyRef: name: jaeger-configuration key: span-storage-type volumes: - configMap: name: jaeger-configuration items: - key: query path: query.yaml name: jaeger-configuration-volume
3. jaeger query service的安装:jaeger-query-service.yml
apiVersion: v1 kind: Service metadata: name: jaeger-query labels: app: jaeger jaeger-infra: query-service spec: ports: - name: jaeger-query port: 80 protocol: TCP targetPort: 16686 selector: jaeger-infra: query-pod type: LoadBalancer
4. jaeger collector pod的安装:jaeger-query-collector.yml
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: jaeger-collector labels: app: jaeger jaeger-infra: collector-deployment spec: replicas: 1 strategy: type: Recreate template: metadata: labels: app: jaeger jaeger-infra: collector-pod annotations: prometheus.io/scrape: "true" prometheus.io/port: "14268" spec: containers: - image: jaegertracing/jaeger-collector:latest name: jaeger-collector args: ["--config-file=/conf/collector.yaml"] ports: - containerPort: 14267 protocol: TCP - containerPort: 14268 protocol: TCP - containerPort: 9411 protocol: TCP readinessProbe: httpGet: path: "/" port: 14269 volumeMounts: - name: jaeger-configuration-volume mountPath: /conf env: - name: SPAN_STORAGE_TYPE valueFrom: configMapKeyRef: name: jaeger-configuration key: span-storage-type volumes: - configMap: name: jaeger-configuration items: - key: collector path: collector.yaml name: jaeger-configuration-volume
5. jaeger collector service的安装:jaeger-query-service.yml
apiVersion: v1 kind: List items: - apiVersion: v1 kind: Service metadata: name: jaeger-collector labels: app: jaeger jaeger-infra: collector-service spec: ports: - name: jaeger-collector-tchannel port: 14267 protocol: TCP targetPort: 14267 - name: jaeger-collector-http port: 14268 protocol: TCP targetPort: 14268 - name: jaeger-collector-zipkin port: 9411 protocol: TCP targetPort: 9411 selector: jaeger-infra: collector-pod type: ClusterIP - apiVersion: v1 kind: Service metadata: name: zipkin labels: app: jaeger jaeger-infra: zipkin-service spec: ports: - name: jaeger-collector-zipkin port: 9411 protocol: TCP targetPort: 9411 selector: jaeger-infra: collector-pod type: ClusterIP
6. elasticsearch pod的安装:elasticsearch-statefulset.yml
apiVersion: apps/v1beta1 kind: StatefulSet metadata: name: elasticsearch labels: app: jaeger jaeger-infra: elasticsearch-statefulset spec: serviceName: elasticsearch replicas: 1 template: metadata: labels: app: jaeger-elasticsearch jaeger-infra: elasticsearch-replica spec: containers: - name: elasticsearch image: docker.elastic.co/elasticsearch/elasticsearch:5.6.0 imagePullPolicy: Always command: - bin/elasticsearch args: - "-Ehttp.host=0.0.0.0" - "-Etransport.host=127.0.0.1" volumeMounts: - name: data mountPath: /data readinessProbe: exec: command: - curl - --fail - --silent - --output - /dev/null - --user - elastic:changeme - localhost:9200 initialDelaySeconds: 5 periodSeconds: 5 timeoutSeconds: 4 volumes: - name: data emptyDir: {}
7. elasticsearch service的安装:elasticsearch-service.yml
apiVersion: v1 kind: Service metadata: name: elasticsearch labels: app: jaeger jaeger-infra: elasticsearch-service spec: clusterIP: None selector: app: jaeger-elasticsearch ports: - port: 9200 name: elasticsearch - port: 9300 name: transport
- 测试用例的部署:
本文使用hotrod作为jaeger的测试用例:
1. deployment的部署:
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: hotrod spec: template: metadata: labels: app: hotrod spec: containers: - image: jaegertracing/example-hotrod:latest name: hotrod ports: - containerPort: 8080 - image: registry.jaegertracing/jaeger-agent:latest name: jaeger-agent ports: - containerPort: 5775 protocol: UDP - containerPort: 6831 protocol: UDP - containerPort: 6832 protocol: UDP - containerPort: 5778 protocol: TCP command: - "/go/bin/agent-linux" - "--collector.host-port=jaeger-collector.logging-test:14267"
2. service的部署:
apiVersion: v1
kind: Service
metadata:
labels:
app: hotrod
name: hotrod
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
nodePort: 30000
selector:
app: hotrod
-
部署kibana
部署kibana为了很好的与elasticsearch集成,校验数据的存储
1. kibana deployment的部署:
apiVersion: apps/v1 kind: Deployment metadata: name: kibana-logging labels: name: kibana-logging kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile spec: replicas: 1 selector: matchLabels: name: kibana-logging template: metadata: labels: name: kibana-logging annotations: seccomp.security.alpha.kubernetes.io/pod: 'docker/default' spec: containers: - name: kibana-logging image: docker.elastic.co/kibana/kibana:5.6.0 resources: # need more cpu upon initialization, therefore burstable class limits: cpu: 1000m requests: cpu: 100m env: - name: ELASTICSEARCH_URL value: http://elasticsearch:9200 - name: ELASTICSEARCH_USERNAME value: elastic - name: ELASTICSEARCH_PASSWORD value: changeme ports: - containerPort: 5601 name: ui protocol: TCP
2. service的部署:
apiVersion: v1 kind: Service metadata: name: kibana-logging labels: name: kibana-logging kubernetes.io/cluster-service: "true" kubernetes.io/name: "Kibana" spec: type: NodePort ports: - port: 5601 protocol: TCP targetPort: ui nodePort: 30012 selector: name: kibana-logging
- 部署之后,kubernetes的结构
访问 http://localhost:80 即可进入jaeger界面
访问 http://localhost:30000 即可进入hotrod界面
访问 http://localhost:30012 即可进入kibana界面, 如果需要登录 输入admin/admin
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Docker 安装ELK之(2)
先安装Docker [root@jiaxin-ceshi src]# curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 启动docker [root@jiaxin-ceshi src]# service docker start Redirecting to /bin/systemctl start docker.service [root@jiaxin-ceshi src]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@jiaxin-ceshi src]# docker search elk NAME DESCRIPTION STARS OFFICIAL AUTOMATED sebp/elk Collect, search and visualise log data with … 734 [OK] qnib/elk Dockerfile providing ELK services (Elasticse…...
- 下一篇
Docker安装Mysql服务
拉取官方镜像 # docker pull mysql # docker inspect mysql | grep ''VERSION'' "GOSU_VERSION=1.7", "MYSQL_VERSION=8.0.11-1debian9" "GOSU_VERSION=1.7", "MYSQL_VERSION=8.0.11-1debian9" 运行容器 # docker run -it -d -p 13306:3306 --name db_mysql --restart=always -e MYSQL_ROOT_PASSWORD=root -v /opt/docker/mysql/log:/var/log/mysql -v /opt/docker/mysql/data:/var/lib/mysql -v /opt/docker/mysql/conf:/etc/mysql/conf.d mysql 查看容器日志 '查看最后200条日志' # docker logs --tail=200 db_mysql '滚动监听' # docker logs -f db_mysql 配置Mysql #...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Mario游戏-低调大师作品
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装