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

环境准备

  • 安装好k8s的集群
  • docker

需要了解的知识

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

构建简单的应用

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

运行docker部分命令

// 需要依赖的环境, 也可以是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镜像
docker build -t hanbin/eureka:1.0 [-f DockerfileDir] .

-t 构建镜像的名称与版本
-f 如果Dockerfile不在当前目录,则需要指定,指定到Dockerfile目录级即可
.  固定带,指文件名称是 Dockerfile
  • 查看是否构建成功
    一般在成功,会有对应输出,也可以使用命令查看本地镜像列表
docker images
  • docker镜像进行提交到阿里云容器服务(可选,建议)
    构建成功之后,一般是都提交到对应的镜像仓库,公共的有docker Hub的,也有阿里云或者腾讯云,或者自己私有化部署,都可以选择,这里以阿里云为例
    阿里云容器镜像服务
    可以根据需要开通,免费试用,申请个人服务即可
命令可以在镜像服务仓库列表,点击对应的仓库名称,进入对应的基本信息页面,可以看到
这个是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服务文件

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查看所有已经启动的服务
kubectl apply -f selfServerEureka.yaml