Rancher2.5部署(单节点)可行方案

821 阅读2分钟

知识储备:

  1. 了解k8s(Kubernetes)中,Deployments,Pods,Service,Secrets概念
  2. 熟悉Docker
  3. 了解Rancher架构(中文文档

实施:

一、Rancher2.5运行环境

  1. Ubuntu16.04
  2. Centos7+
  3. Docker 1.12.6,1.13.1,17.03.2
$ sudo yum install -y yum-utils

$ sudo yum-config-manager  --add-repo https://download.docker.com/linux/centos/docker-ce.repo 

$ yum list docker-ce --showduplicates | sort -r
#看到17.03.2问题

$ yum install -y --setopt=obsoletes=0 \
   docker-ce-17.03.2.ce-1.el7.centos.x86_64 \
   docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch

二、安装Rancher2.5

#拉取镜像 
docker pull rancher/rancher:v2.5-head 

#运行镜像 
#提前开放mysql 30006,redis30007,gateway30009端口
docker run -p 880:80 -p 8443:443 -p 30009:30009 \
--name rancher \
--privileged \
--restart=unless-stopped \
-d rancher/rancher:v2.5-head

三、部署

大致流程:本地环境构建镜像并推送到阿里云镜像仓库,在rancher修改对应的deployments里的依赖镜像版本,重新部署即可。

步骤:

  1. 本地开发环境安装docker
  2. idea安装alibaba cloud toolkit插件

配置maven打包命令

clean package -Dmaven.test.skip=true -Dautoconfig.skip
  1. 新建Dockerfile
FROM hub.c.163.com/library/java:8-alpine
#在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
VOLUME /tmp
ADD /target/app.jar app.jar
EXPOSE 9999
# set Time zone
ENV TZ=Asia/Shanghai
RUN set -eux; \
   ln -snf /usr/share/zoneinfo/$TZ /etc/localtime; \
   echo $TZ > /etc/timezone

ENTRYPOINT ["java", "-jar", "/app.jar"]
  1. 新建deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-test
  namespace: app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app-test
  template:
    metadata:
      labels:
        app: app-test
    spec:
      imagePullSecrets:
        - name: ali-docker
      containers:
        - args:
            - java
            - -jar
            - app.jar
          image: xxxxxx
          imagePullPolicy: Always
          name: app-test
  1. 使用alibaba cloud toolkit把镜像推送到云端
  2. 在rancher创建deployment.yaml即可

五、rancher调优

  1. 针对java应用,配置jvm参数,初始化堆大小
JAVA_TOOL_OPTIONS: -XX:InitialHeapSize=66m
  1. 配置升级策略

滚动升级:创建新的pod,直到达到max surge,然后再删除旧的pod,max surge=maxSurge*replicas

  1. 配置启动探针(健康检查)
startupProbe: 
   #允许探测失败次数
   failureThreshold: 3 
   #检查接口 
   httpGet: 
     path: /actuator/health 
     port: 5000 
     scheme: HTTP 
   #每10秒探测一下 
   periodSeconds: 10 
   #成功次数后通行 
   successThreshold: 1 
   #探针探测超时时间 
   timeoutSeconds: 1 
   #等待60秒后开始探测 
   initialDelaySeconds: 60
  1. 映射数据卷,达到持久化目的

资源-> 工作负载-> 升级-> 数据卷->映射主机目录

六、缺点以及注意事项

  1. 单节点,存在大家都知道的单点故障问题。