k8s安装完成,需要来验证一下是否可以集群启动应用

环境准备

  • 安装好k8s的集群
  • docker

需要了解的知识

  • docker构建镜像以及推送镜像到仓库
  • 阿里云容器镜像服务(对应的需要去阿里云查询)
  • k8s 服务文件编写

构建简单的应用

  • 这里使用的是springBoot的应用,是eureka注册中心(这个大家可以自主新建项目以及打包成jar文件),文件比较大,大家自行构建
  • 也可以自己新建其他类型或者语言的应用(例如vue/pythonFastApi项目,区别只在启动命令不同)

运行docker部分命令

  • 新建Dockerfile
    参考Dockerfile

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // 需要依赖的环境, 也可以是nodejs或者python等,具体可以去docker的hub中心查找
    FROM openjdk:11-jdk
    // 新建文件夹
    RUN mkdir /app
    // 移动到app目录,将app作为工作目录
    WORKDIR /app

    // 将宿主机打包生成的jar文件 添加到镜像中,并且移动到app下,修改名称为app.jar
    ADD ./eureka-0.0.1-SNAPSHOT.jar /app/app.jar

    // 开放8200端口,这里要和程序里面的一致
    EXPOSE 8200
    // 具体启动程序命令
    ENTRYPOINT ["java", "-jar", "app.jar"]
  • 进行构建docker镜像

    1
    2
    3
    4
    5
    docker build -t hanbin/eureka:1.0 [-f DockerfileDir] .

    -t 构建镜像的名称与版本
    -f 如果Dockerfile不在当前目录,则需要指定,指定到Dockerfile目录级即可
    . 固定带,指文件名称是 Dockerfile
  • 查看是否构建成功
    一般在成功,会有对应输出,也可以使用命令查看本地镜像列表

    1
    docker images
  • docker镜像进行提交到阿里云容器服务(可选,建议)
    构建成功之后,一般是都提交到对应的镜像仓库,公共的有docker Hub的,也有阿里云或者腾讯云,或者自己私有化部署,都可以选择,这里以阿里云为例
    阿里云容器镜像服务
    可以根据需要开通,免费试用,申请个人服务即可

    1
    2
    3
    4
    5
    6
    7
    8
    9
    命令可以在镜像服务仓库列表,点击对应的仓库名称,进入对应的基本信息页面,可以看到
    这个是docker登录命令,只有登录成功才可以成功推送或者拉取镜像,不管在打包服务器或者容器部署的服务器
    docker login --username=xxxx registry-vpc.cn-shanghai.aliyuncs.com

    imageId 可以使用docker images命令查看, 镜像版本号可以根据需求自行更改
    docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/han-bin/koishi:[镜像版本号]

    推送到容器镜像仓库,版本号要与上一个命令一致
    docker push registry.cn-shanghai.aliyuncs.com/han-bin/koishi:[镜像版本号]

    编写k8s服务文件

  • 新建对应的yaml文件,我这里叫selfServerEureka.yaml
    参考selfServerEureka.yaml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    apiVersion: apps/v1
    kind: Deployment #部署
    metadata:
    name: self-server-eureka # 服务名
    spec:
    replicas: 2 #2个副本
    selector:
    matchLabels:
    app: self-server-eureka # 服务名
    template:
    metadata:
    labels:
    app: self-server-eureka # 服务名
    spec:
    containers:
    - name: self-server-eureka # 服务名
    image: registry-vpc.cn-shanghai.aliyuncs.com/hanbinsite-0/self-server:1.0.1 #刚刚push到阿里云上的镜像地址
    ports:
    - containerPort: 8200 #默认springboot端口

    ---

    apiVersion: v1
    kind: Service
    metadata:
    name: self-server-eureka
    spec:
    selector:
    app: self-server-eureka #选中上面的 Deployment
    ports:
    - port: 8200 #对外7003端口
    targetPort: 8200


    ---
    #Ingress
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
    name: myingress
    labels:
    name: myingress
    spec:
    IngressClass: nginx
    rules:
    - host: eureka.xxx.com #所有的host这个域名请求 转发到上面的 Service= self-server-eureka, 如果没有公网解析或者公网IP,则可以修改本机hosts文件
    http:
    paths:
    - pathType: Prefix
    path: "/"
    backend:
    service:
    name: self-server-eureka # 转发到 这个Service
    port:
    number: 8200
  • 启动命令,可以使用命令进行查看,或者在 dashboard查看所有已经启动的服务

    1
    kubectl apply -f selfServerEureka.yaml