一、准备工作

将v2目录上传到/root/目录
下载地址
链接:https://pan.baidu.com/s/1oqED4Kew5BeLFqms6U6ISw
提取码:lzx9

springcloud1 项目,用k8s部署
eureka: eureka1、eureka2
item
user
order

相应的jar包和Dockerfile文件v2目录已写好

二、构建镜像

1 构建 jdk8 镜像

jdk目录 Dockerfile 文件

FROM centos:8
ADD jdk-8u291-linux-x64.tar.gz /usr/local/
ENV JAVA_HOME=/usr/local/jdk1.8.0_291 \
    PATH=$PATH:/usr/local/jdk1.8.0_291/bin
CMD ["bash"]

构建镜像 docker build -t centos7-jdk8:v1 /root/v2/jdk/

2 构建 eureka 镜像

eureka 目录下Dockerfile 文件

FROM centos7-jdk8:v1
COPY sp05-eureka-0.0.1-SNAPSHOT.jar /opt/
ENTRYPOINT ["java", "-jar", "/opt/sp05-eureka-0.0.1-SNAPSHOT.jar"]
CMD ["--spring.profiles.active=eureka1", "--server.port=2001"]

构建镜像 docker build -t sp-eureka:v1 /root/v2/eureka/

3 构建 item 镜像

item 目录下Dockerfile 文件

FROM centos7-jdk8:v1
COPY sp02-itemservice-0.0.1-SNAPSHOT.jar /opt/
ENTRYPOINT ["java", "-jar", "/opt/sp02-itemservice-0.0.1-SNAPSHOT.jar"]

构建镜像 docker build -t sp-item:v1 /root/v2/item/

4 构建 user 镜像

user 目录下Dockerfile 文件

FROM centos7-jdk8:v1
COPY sp03-userservice-0.0.1-SNAPSHOT.jar /opt/
ENTRYPOINT ["java", "-jar", "/opt/sp03-userservice-0.0.1-SNAPSHOT.jar"]

构建镜像 docker build -t sp-user:v1 /root/v2/user/

5 构建 order 镜像

order 目录下Dockerfile 文件

FROM centos7-jdk8:v1
COPY sp04-orderservice-0.0.1-SNAPSHOT.jar /opt/
ENTRYPOINT ["java", "-jar", "/opt/sp04-orderservice-0.0.1-SNAPSHOT.jar"]

构建镜像 docker build -t sp-order:v1 /root/v2/order/

6 导出镜像,再导入其他服务器

docker save \
        centos7-jdk8:v1 \
        sp-eureka:v1 \
        sp-item:v1 \
        sp-user:v1 \
        sp-order:v1 \
        | gzip > img.gz

# 将文件复制到 192 和 193
scp img.gz 192.168.64.192:/root/

scp img.gz 192.168.64.193:/root/
# 在 192 和 193 执行导入
docker load -i img.gz

三、部署

在这里插入图片描述

1 eureka

用rs部署容器, 先创建rs部署描述文件

cat <<EOF > eureka1-rs.yml
apiVersion: apps/v1              # RS 是 apps/v1中提供的资源类型
kind: ReplicaSet                 # 资源类型
metadata:
  name: eureka1                    # RS 命名为 eureka1
spec:
  replicas: 1                    # pod 副本数量
  selector:
    matchLabels:                 # 使用 label 选择器
      app: eureka1                 # 选取标签是 "app=eureka1" 的pod
  template:
    metadata:
      labels:
        app: eureka1               # 为创建的pod添加标签 "app=eureka1"
    spec:
      containers:
      - name: eureka1             # 容器名
        image: sp-eureka:v1       # 镜像
        ports:
        - containerPort: 2001    # 容器暴露的端口
          protocol: TCP
EOF
cat <<EOF > eureka2-rs.yml
apiVersion: apps/v1              # RS 是 apps/v1中提供的资源类型
kind: ReplicaSet                 # 资源类型
metadata:
  name: eureka2                    # RS 命名为 eureka2
spec:
  replicas: 1                    # pod 副本数量
  selector:
    matchLabels:                 # 使用 label 选择器
      app: eureka2                 # 选取标签是 "app=eureka2" 的pod
  template:
    metadata:
      labels:
        app: eureka2               # 为创建的pod添加标签 "app=eureka2"
    spec:
      containers:
      - name: eureka2             # 容器名
        image: sp-eureka:v1       # 镜像
        args: ["--spring.profiles.active=eureka2", "--server.port=2002"]
        ports:
        - containerPort: 2002    # 容器暴露的端口
          protocol: TCP
EOF

部署rs, rs会自动创建容器,启动eureka服务器

k create -f eureka1-rs.yml
k create -f eureka2-rs.yml

部署 service, 对外暴露eureka访问

cat <<EOF > eureka1-svc.yml
apiVersion: v1
kind: Service
metadata:
  name: eureka1
spec:
  type: NodePort           # 在每个节点上开放访问端口
  ports:
  - port: 2001               # 集群内部访问该服务的端口
    targetPort: 2001       # 容器的端口
    nodePort: 30123        # 外部访问端口
  selector:
    app: eureka1
EOF
cat <<EOF > eureka2-svc.yml
apiVersion: v1
kind: Service
metadata:
  name: eureka2
spec:
  type: NodePort           # 在每个节点上开放访问端口
  ports:
  - port: 2002              # 集群内部访问该服务的端口
    targetPort: 2002       # 容器的端口
    nodePort: 30124        # 外部访问端口
  selector:
    app: eureka2
EOF

部署后访问测试:
http://192.168.64.191:30123
http://192.168.64.191:30124/

2 item-service

cat <<EOF > item-rs.yml
apiVersion: apps/v1              # RS 是 apps/v1中提供的资源类型
kind: ReplicaSet                 # 资源类型
metadata:
  name: item                    # RS 命名为 item
spec:
  replicas: 2                    # pod 副本数量
  selector:
    matchLabels:                 # 使用 label 选择器
      app: item                 # 选取标签是 "app=item" 的pod
  template:
    metadata:
      labels:
        app: item               # 为创建的pod添加标签 "app=item"
    spec:
      containers:
      - name: item             # 容器名
        image: sp-item:v1       # 镜像
EOF

3 user-service

cat <<EOF > user-rs.yml
apiVersion: apps/v1              # RS 是 apps/v1中提供的资源类型
kind: ReplicaSet                 # 资源类型
metadata:
  name: user                    # RS 命名为 user
spec:
  replicas: 2                    # pod 副本数量
  selector:
    matchLabels:                 # 使用 label 选择器
      app: user                 # 选取标签是 "app=user" 的pod
  template:
    metadata:
      labels:
        app: user               # 为创建的pod添加标签 "app=user"
    spec:
      containers:
      - name: user             # 容器名
        image: sp-user:v1       # 镜像
EOF

4 order-service

cat <<EOF > order-rs.yml
apiVersion: apps/v1              # RS 是 apps/v1中提供的资源类型
kind: ReplicaSet                 # 资源类型
metadata:
  name: order                    # RS 命名为 order
spec:
  replicas: 2                    # pod 副本数量
  selector:
    matchLabels:                 # 使用 label 选择器
      app: order                 # 选取标签是 "app=order" 的pod
  template:
    metadata:
      labels:
        app: order               # 为创建的pod添加标签 "app=order"
    spec:
      containers:
      - name: order             # 容器名
        image: sp-order:v1       # 镜像
EOF

对外暴露order服务,进行测试

cat <<EOF > order-svc.yml
apiVersion: v1
kind: Service
metadata:
  name: order
spec:
  type: NodePort           # 在每个节点上开放访问端口
  ports:
  - port: 8201              # 集群内部访问该服务的端口
    targetPort: 8201       # 容器的端口
    nodePort: 30201        # 外部访问端口
  selector:
    app: order
EOF

访问 http://192.168.64.191:30201/aaa 测试

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐