1.部署apollo-adminservice软件包

apollo-adminservice软件包链接地址:https://github.com/ctripcorp/apollo/releases/download/v1.5.1/apollo-adminservice-1.5.1-github.zip

在运维主机(mfyxw50l.mfyxw.com)上操作

(1)下载软件

  1. [root@mfyxw50 ~]# cd /opt/src/
  2. [root@mfyxw50 src]# wget https://github.com/ctripcorp/apollo/releases/download/v1.5.1/apollo-adminservice-1.5.1-github.zip

(2)解压到指定的目录

  1. [root@mfyxw50 ~]# mkdir -p /data/dockerfile/apollo-adminservice
  2. [root@mfyxw50 ~]# unzip /opt/src/apollo-adminservice-1.5.1-github.zip -d /data/dockerfile/apollo-adminservice/

(3)删除不使用的文件

  1. [root@mfyxw50 ~]# rm -fr /data/dockerfile/apollo-adminservice/apollo-adminservice-1.5.1-sources.jar
  2. [root@mfyxw50 ~]# rm -fr /data/dockerfile/apollo-adminservice/scripts/shutdown.sh
  3. [root@mfyxw50 ~]# rm -fr /data/dockerfile/apollo-adminservice/apollo-adminservice.conf

2.制作apollo-adminservice的Docker镜像

(1)配置数据库连接串

  1. [root@mfyxw50 ~]# cat > /data/dockerfile/apollo-adminservice/config/application-github.properties << EOF
  2. # DataSource
  3. spring.datasource.url = jdbc:mysql://mysql.od.com:3306/ApolloConfigDB?characterEncoding=utf8
  4. spring.datasource.username = apolloconfig
  5. spring.datasource.password = 123456
  6. EOF

(2)更新startup.sh文件

  1. [root@mfyxw50 ~]# cat > /data/dockerfile/apollo-adminservice/scripts/startup.sh << EOF
  2. #!/bin/bash
  3. SERVICE_NAME=apollo-adminservice
  4. ## Adjust log dir if necessary
  5. LOG_DIR=/opt/logs/apollo-adminservice
  6. ## Adjust server port if necessary
  7. SERVER_PORT=8080
  8. APOLLO_ADMIN_SERVICE_NAME=\$(hostname -i)
  9. # SERVER_URL="http://localhost:\${SERVER_PORT}"
  10. SERVER_URL="http://\${APOLLO_ADMIN_SERVICE_NAME}:\${SERVER_PORT}"
  11. ## Adjust memory settings if necessary
  12. #export JAVA_OPTS="-Xms2560m -Xmx2560m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=1536m -XX:MaxNewSize=1536m -XX:SurvivorRatio=8"
  13. ## Only uncomment the following when you are using server jvm
  14. #export JAVA_OPTS="\$JAVA_OPTS -server -XX:-ReduceInitialCardMarks"
  15. ########### The following is the same for configservice, adminservice, portal ###########
  16. export JAVA_OPTS="\$JAVA_OPTS -XX:ParallelGCThreads=4 -XX:MaxTenuringThreshold=9 -XX:+DisableExplicitGC -XX:+ScavengeBeforeFullGC -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+ExplicitGCInvokesConcurrent -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Duser.timezone=Asia/Shanghai -Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 -Djava.security.egd=file:/dev/./urandom"
  17. export JAVA_OPTS="\$JAVA_OPTS -Dserver.port=\$SERVER_PORT -Dlogging.file=\$LOG_DIR/\$SERVICE_NAME.log -XX:HeapDumpPath=\$LOG_DIR/HeapDumpOnOutOfMemoryError/"
  18. # Find Java
  19. if [[ -n "\$JAVA_HOME" ]] && [[ -x "\$JAVA_HOME/bin/java" ]]; then
  20. javaexe="\$JAVA_HOME/bin/java"
  21. elif type -p java > /dev/null 2>&1; then
  22. javaexe=\$(type -p java)
  23. elif [[ -x "/usr/bin/java" ]]; then
  24. javaexe="/usr/bin/java"
  25. else
  26. echo "Unable to find Java"
  27. exit 1
  28. fi
  29. if [[ "\$javaexe" ]]; then
  30. version=\$("\$javaexe" -version 2>&1 | awk -F '"' '/version/ {print \$2}')
  31. version=\$(echo "\$version" | awk -F. '{printf("%03d%03d",\$1,\$2);}')
  32. # now version is of format 009003 (9.3.x)
  33. if [ \$version -ge 011000 ]; then
  34. JAVA_OPTS="\$JAVA_OPTS -Xlog:gc*:\$LOG_DIR/gc.log:time,level,tags -Xlog:safepoint -Xlog:gc+heap=trace"
  35. elif [ \$version -ge 010000 ]; then
  36. JAVA_OPTS="\$JAVA_OPTS -Xlog:gc*:\$LOG_DIR/gc.log:time,level,tags -Xlog:safepoint -Xlog:gc+heap=trace"
  37. elif [ \$version -ge 009000 ]; then
  38. JAVA_OPTS="\$JAVA_OPTS -Xlog:gc*:\$LOG_DIR/gc.log:time,level,tags -Xlog:safepoint -Xlog:gc+heap=trace"
  39. else
  40. JAVA_OPTS="\$JAVA_OPTS -XX:+UseParNewGC"
  41. JAVA_OPTS="\$JAVA_OPTS -Xloggc:\$LOG_DIR/gc.log -XX:+PrintGCDetails"
  42. JAVA_OPTS="\$JAVA_OPTS -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=60 -XX:+CMSClassUnloadingEnabled -XX:+CMSParallelRemarkEnabled -XX:CMSFullGCsBeforeCompaction=9 -XX:+CMSClassUnloadingEnabled -XX:+PrintGCDateStamps -XX:+PrintGCApplicationConcurrentTime -XX:+PrintHeapAtGC -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=5M"
  43. fi
  44. fi
  45. printf "\$(date) ==== Starting ==== \n"
  46. cd \`dirname \$0\`/..
  47. chmod 755 \$SERVICE_NAME".jar"
  48. ./\$SERVICE_NAME".jar" start
  49. rc=\$?;
  50. if [[ \$rc != 0 ]];
  51. then
  52. echo "\$(date) Failed to start \$SERVICE_NAME.jar, return code: \$rc"
  53. exit \$rc;
  54. fi
  55. tail -f /dev/null
  56. EOF

(3)编写apollo-adminservice的Dockerfile文件

  1. [root@mfyxw50 ~]# cat > /data/dockerfile/apollo-adminservice/Dockerfile << EOF
  2. FROM harbor.od.com/base/jre8:8u112
  3. ENV VERSION 1.5.1
  4. RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&\
  5. echo "Asia/Shanghai" > /etc/timezone
  6. ADD apollo-adminservice-\${VERSION}.jar /apollo-adminservice/apollo-adminservice.jar
  7. ADD config/ /apollo-adminservice/config
  8. ADD scripts/ /apollo-adminservice/scripts
  9. CMD ["/apollo-adminservice/scripts/startup.sh"]
  10. EOF

(4)制作镜像并推送

  1. [root@mfyxw50 ~]# cd /data/dockerfile/apollo-adminservice
  2. [root@mfyxw50 apollo-adminservice]# docker build . -t harbor.od.com/infra/apollo-adminservice:v1.5.1
  3. [root@mfyxw50 ~]# docker login harbor.od.com
  4. [root@mfyxw50 ~]# docker push harbor.od.com/infra/apollo-adminservice:v1.5.1

(5)登录harbor查看是否已经上传成功

3.准备apollo-adminservice的资源配置清单

在运维主机mfyxw50.mfyxw.com上操作

(1)创建存放资源配置清单的目录

  1. [root@mfyxw50 ~]# mkdir -p /data/k8s-yaml/apollo-adminservice

(2)Deployment.yaml文件内容如下

  1. [root@mfyxw50 ~]# cat > /data/k8s-yaml/apollo-adminservice/deployment.yaml << EOF
  2. kind: Deployment
  3. apiVersion: extensions/v1beta1
  4. metadata:
  5. name: apollo-adminservice
  6. namespace: infra
  7. labels:
  8. name: apollo-adminservice
  9. spec:
  10. replicas: 1
  11. selector:
  12. matchLabels:
  13. name: apollo-adminservice
  14. template:
  15. metadata:
  16. labels:
  17. app: apollo-adminservice
  18. name: apollo-adminservice
  19. spec:
  20. volumes:
  21. - name: configmap-volume
  22. configMap:
  23. name: apollo-adminservice-cm
  24. containers:
  25. - name: apollo-adminservice
  26. image: harbor.od.com/infra/apollo-adminservice:v1.5.1
  27. ports:
  28. - containerPort: 8080
  29. protocol: TCP
  30. volumeMounts:
  31. - name: configmap-volume
  32. mountPath: /apollo-adminservice/config
  33. terminationMessagePath: /dev/termination-log
  34. terminationMessagePolicy: File
  35. imagePullPolicy: IfNotPresent
  36. imagePullSecrets:
  37. - name: harbor
  38. restartPolicy: Always
  39. terminationGracePeriodSeconds: 30
  40. securityContext:
  41. runAsUser: 0
  42. schedulerName: default-scheduler
  43. strategy:
  44. type: RollingUpdate
  45. rollingUpdate:
  46. maxUnavailable: 1
  47. maxSurge: 1
  48. revisionHistoryLimit: 7
  49. progressDeadlineSeconds: 600
  50. EOF

(3)ConfigMap.yaml文件内容如下

  1. [root@mfyxw50 ~]# cat > /data/k8s-yaml/apollo-adminservice/configmap.yaml << EOF
  2. apiVersion: v1
  3. kind: ConfigMap
  4. metadata:
  5. name: apollo-adminservice-cm
  6. namespace: infra
  7. data:
  8. application-github.properties: |
  9. # DataSource
  10. spring.datasource.url = jdbc:mysql://mysql.od.com:3306/ApolloConfigDB?characterEncoding=utf8
  11. spring.datasource.username = apolloconfig
  12. spring.datasource.password = 123456
  13. eureka.service.url = http://config.od.com/eureka
  14. app.properties: |
  15. appId=100003172
  16. EOF

4.应用apollo-adminservice资源配置清单

在master节点(mfyxw30.mfyxw.com或mfyxw40.mfyxw.com)任意一台操作

(1)应用资源配置清单

  1. [root@mfyxw30 ~]# kubectl apply -f http://k8s-yaml.od.com/apollo-adminservice/deployment.yaml
  2. deployment.extensions/apollo-adminservice created
  3. [root@mfyxw30 ~]#
  4. [root@mfyxw30 ~]# kubectl apply -f http://k8s-yaml.od.com/apollo-adminservice/configmap.yaml
  5. configmap/apollo-adminservice-cm created
  6. [root@mfyxw30 ~]#

(2)查看apollo-adminservice的pod是否运行成功

  1. [root@mfyxw30 ~]# kubectl get pod -n infra
  2. NAME READY STATUS RESTARTS AGE
  3. apollo-adminservice-5cccf97c64-bhqzb 1/1 Running 0 72s
  4. apollo-configservice-5f6555448-wwgsc 1/1 Running 1 2d17h
  5. dubbo-monitor-6676dd74cc-9hghb 1/1 Running 11 17d
  6. dubbo-monitor-6676dd74cc-rd86g 1/1 Running 10 17d
  7. jenkins-b99776c69-p6skp

5.浏览器访问config.od.com是否出现有apollo-adminservice

在kubernetes集群里集成Apollo配置中心(1)之交付Apollo-adminservice至Kubernetes集群的更多相关文章

  1. 在kubernetes集群里集成Apollo配置中心(1)之交付Apollo-configservice至Kubernetes集群

    1.Apollo简介 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微 ...

  2. 在kubernetes集群里集成Apollo配置中心(3)之交付Apollo-portal至Kubernetes集群

    1.执行apollo-portal数据库脚本 apollo-portal数据库脚本链接:https://raw.githubusercontent.com/ctripcorp/apollo/1.5.1 ...

  3. Spring Boot 2.0 整合携程Apollo配置中心

    原文:https://www.jianshu.com/p/23d695af7e80 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够 ...

  4. (转)实验文档3:在kubernetes集群里集成Apollo配置中心

    使用ConfigMap管理应用配置 拆分环境 主机名 角色 ip HDSS7-11.host.com zk1.od.com(Test环境) 10.4.7.11 HDSS7-12.host.com zk ...

  5. 基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)

    基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)   前言 前几天对Apollo配置中心的demo进行一个部署试用,现公司已决定使用,这两天进行分布式部署的时候 ...

  6. 基于zookeeper集群的云平台-配置中心的功能设计

    最近准备找工作面试,就研究了下基于zookeeper集群的配置中心. 下面是自己设想的关于开源的基于zookeeper集群的云平台-配置中心的功能设计.大家觉得哪里有问题,请提出宝贵的意见和建议,谢谢 ...

  7. 携程 Apollo 配置中心传统 .NET 项目集成实践

    官方文档存在的问题 可能由于 Apollo 配置中心的客户端源码一直处于更新中,导致其相关文档有些跟不上节奏,部分文档写的不规范,很容易给做对接的新手朋友造成误导. 比如,我在参考如下两个文档使用传统 ...

  8. kubernetes实战-配置中心(四)分环境使用apollo配置中心

    要进行分环境,需要将现有实验环境进行拆分 portal服务,可以各个环境共用,但是apollo-adminservice和apollo-configservice必须要分开. 1.zk环境拆分为tes ...

  9. k8s-2-集成apollo配置中心

    主题: 在k8s中集成Apollo配置中心 架构图 一.配置中心概述 配置的几种方式 本课讲得是基于配置中心数据库实现 配置管理的现状 常见的配置中心 主讲:k8s configmap,apollo ...

随机推荐

  1. kubernets之Replication Controller

    一  Replication Controller的介绍      pod可能会由于各种原因消失和多出来,例如node节点去除集群或者人为的手工创建,所以为了方便和管理pod的数量,k8s里面 的另外 ...

  2. ORA-00054: 資源正被使用中, 請設定 NOWAIT 來取得它, 否則逾時到期

    1.查看被使用资源的OBJECT_ID SELECT *FROM DBA_OBJECTS WHERE OBJECT_NAME='OBJECT_NAME' 2.查看资源被谁占用SELECT * FROM ...

  3. Vue使用Ref跨层级获取组件实例

    目录 Vue使用Ref跨层级获取组件实例 示例介绍 文档目录结构 安装vue-ref 根组件自定义方法[使用provide和inject] 分别说明各个页面 结果 Vue使用Ref跨层级获取组件实例 ...

  4. CSS3+JS完美实现放大镜模式

    最近看到一篇讲放大镜的文章,实践后感觉效果非常好,这里分享给大家. 效果如下: 其实现核心: CSS函数,如:calc() -- 动态计算:var() -- 使用自定义变量 CSS伪元素:::befo ...

  5. 从零开始学spring源码之xml解析(一):入门

    谈到spring,首先想到的肯定是ioc,DI依赖注入,aop,但是其实很多人只是知道这些是spring核心概念,甚至不知道这些代表了什么意思,,作为一个java程序员,怎么能说自己对号称改变了jav ...

  6. Apache环境下强制http跳转至https的配置总结

    一. 简单实例介绍一般来说,apache配置好http和https后,如果想要做http强转到https,需要设置url重定向规则,大致需要下面几个步骤即可完成配置: 1)在httpd.conf文件里 ...

  7. 解决 minicom 不能接收键盘输入问题

    今天突然minicom 不能接受键盘输入了.早上的时候在其他设备上不能识别usb转串口的设备,重新启动电脑后,恢复正常了.下午又出现minicom 不接收键盘输入. 百度了一下解决了. 解决方法 由于 ...

  8. MDX学习笔记(整理) MDX语法

    1.1.members和Children的用法. select [Measures].[Internet Sales Count] on columns, [客户].[全名] on rows from ...

  9. CF1416D 做题心得

    CF1416D 做题心得 上次在某trick中提到了这个题,一开始觉得太毒瘤没有写,现在把它补上了. 感觉实现这个东西,比单纯收获一个trick,收获的东西多太多了. 主要思路 它的主要trick是& ...

  10. IO多路复用与epoll机制浅析

    epoll是Linux中用于IO多路复用的机制,在nginx和redis等软件中都有应用,redis的性能好的原因之一也就是使用了epoll进行IO多路复用,同时epoll也是各大公司面试的热点问题. ...