知识储备:
- 了解k8s(Kubernetes)中,Deployments,Pods,Service,Secrets概念
- 熟悉Docker
- 了解Rancher架构(中文文档)
实施:
一、Rancher2.5运行环境
- Ubuntu16.04
- Centos7+
- 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里的依赖镜像版本,重新部署即可。
步骤:
- 本地开发环境安装docker
- idea安装alibaba cloud toolkit插件
配置maven打包命令
clean package -Dmaven.test.skip=true -Dautoconfig.skip
- 新建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"]
- 新建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
- 使用alibaba cloud toolkit把镜像推送到云端
- 在rancher创建deployment.yaml即可
五、rancher调优
- 针对java应用,配置jvm参数,初始化堆大小
JAVA_TOOL_OPTIONS: -XX:InitialHeapSize=66m
- 配置升级策略
滚动升级:创建新的pod,直到达到max surge,然后再删除旧的pod,max surge=maxSurge*replicas
- 配置启动探针(健康检查)
startupProbe:
#允许探测失败次数
failureThreshold: 3
#检查接口
httpGet:
path: /actuator/health
port: 5000
scheme: HTTP
#每10秒探测一下
periodSeconds: 10
#成功次数后通行
successThreshold: 1
#探针探测超时时间
timeoutSeconds: 1
#等待60秒后开始探测
initialDelaySeconds: 60
- 映射数据卷,达到持久化目的
资源-> 工作负载-> 升级-> 数据卷->映射主机目录
六、缺点以及注意事项
- 单节点,存在大家都知道的单点故障问题。