[kubernetes]step6-构建spring-cloud的api服务

准备步骤

准备一个deployment

1 打一个jdk基础镜像
2 将原来的启动文件jar包或者文件夹拷贝到打包机字上(这里以用脚本启动的spring cloud项目为例)

我这里选择在k8s-op-m01上服务器打镜像 在k8s-op-m01上启动服务

Dockerfile-java

Dockerfile-java

FROM centos:centos7.4.1708
MAINTAINER PDABC Enterprise Container Images <[email protected]>

ADD jdk-8u161-linux-x64.tar.gz /usr/local/java/
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
WORKDIR /data/module
ENV JAVA_HOME /usr/local/java/jdk1.8.0_161
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH

docker build -f Dockerfile-java -t harbor.aircourses.com/kubernetes/jdk-1.8.0_161:v1

创建Dockerfile

Dockerfile-wehub-80

FROM harbor.aircourses.com/kubernetes/jdk-1.8.0_161:v1
MAINTAINER PDABC Enterprise Container Images <[email protected]>

COPY ac-wehub-80 /data/module/ac-wehub

ENTRYPOINT ["sh", "/data/module/ac-wehub/bin/start.sh","start"]

构建镜像

docker build -f Dockerfile-wehub-80 -t harbor.aircourses.com/kubernetes/wehub:v1.80 .

上传镜像

创建wehub的yaml

**注意 **这里使用了secret保存harbor信息 确保安全性

deployment-eureka.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
# deployment名字 和svc 和ingress绑定没关系
  name: pre-wehub-dp
  namespace: default
spec:
  replicas: 1
  # 在定义模板的时候必须定义labels,因为Deployment.spec.selector是必须字段,而他又必须和template.labels对应
  selector:
    matchLabels:
      app: pre-wehub
  # template里面定义的内容会应用到下面所有的副本集里面(例如depolyment下的pod),在template.spec.containers里面不能定义labels标签。可以kubectl get pods --show-labels查看
  template:
    metadata:
      labels:
        app: pre-wehub
        env: pre
    spec:
      containers:
      # containers名字 和svc 和ingress绑定没关系
      - name: pre-wehub
        image: harbor.aircourses.com/kubernetes/wehub:v1.80
        ports:
        - name: http
          containerPort: 80
      imagePullSecrets:
        - name: myregistrykey

kubectl apply -f deployment-wehub.yaml

修改replicas为2个再次apply

2个pods来了

使用configmap 挂载conf bin文件夹

# 先创建一个configmap
kubectl create configmap wehub-config --from-file=/opt/kubernetes/Dockfile/cm-ac-wehub-80/conf/
# 查看configmap
kubectl get cm
# 查看详情
kubectl  describe cm wehub-config

创建一个不带conf文件夹的镜像并push bin文件夹也可以做成configmap哦

注意 如果原来有conf文件夹会被清空

创建lifecycle-deployment-wehub.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
# deployment名字 和svc 和ingress绑定没关系
  name: pre-cm-wehub-dp
  namespace: default
spec:
  replicas: 2
  # 在定义模板的时候必须定义labels,因为Deployment.spec.selector是必须字段,而他又必须和template.labels对应
  selector:
    matchLabels:
      app: pre-wehub
  # template里面定义的内容会应用到下面所有的副本集里面(例如depolyment下的pod),在template.spec.containers里面不能定义labels标签。可以kubectl get pods --show-labels查看
  template:
    metadata:
      labels:
        app: pre-wehub
        env: pre
    spec:
      containers:
      # containers名字 和svc 和ingress绑定没关系
      - name: pre-wehub
        image: harbor.aircourses.com/kubernetes/wehub:v7.80
        env:
        - name: jobname
          value: ac-wehub
        # 加入lifecycle  否则退
        lifecycle:
          postStart:
            exec:
              command: ["/bin/sh", "-c", 'for i in bin/start.sh conf/application.properties conf/logback.xml ;do sed -i "s/demojob/wehub/g" /data/module/ac-wehub/$i;done']
          preStop:
            exec:
              command: ["/bin/sh", "-c", "sh /data/module/ac-wehub/bin/start.sh stop"]
        ports:
        - name: http
          containerPort: 80
      imagePullSecrets:
        - name: myregistrykey
发布了300 篇原创文章 · 获赞 25 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/xujiamin0022016/article/details/104204629
今日推荐