k8s集群搭建学习-部署一个自定义java服务

一、创建docker镜像
  • dockerFile
FROM  openjdk:13
LABEL  by=jty name=docker_boot description="k8s测试" version="v1.0"
RUN mkdir -p /usr/local/k8s/
RUN cd /usr/local/k8s/
WORKDIR /usr/local/k8s
COPY k8s-test-1.0-SNAPSHOT.jar  /usr/local/k8s/k8s-test-1.0-SNAPSHOT.jar  #k8s-test-1.0-SNAPSHOT.jar为打包后的jar包
EXPOSE  8012
ENTRYPOINT ["java", "-jar", "k8s-test-1.0-SNAPSHOT.jar"]
  • 创建镜像
docker build -f /usr/local/k8s/dockerFile -t k8s-test:v1.0 . #保证编辑的dockerFile在-f后的目录中存在
docker images #查看镜像,该镜像在本地镜像仓库,可通过配置提交到如阿里云镜像仓库等服务器

创建namespace、deployment、service
#vim k8s-test-namespace.yaml
#创建名称空间
apiVersion: v1
kind: Namespace
metadata:
  name: dev
  labels:
   name: k8s-test
#vim k8s-test-deploy.yaml
#创建deployment
apiVersion: apps/v1        # 1.9.0 之前的版本使用 apps/v1beta2,可通过命令 kubectl api-versions 查看
kind: Deployment           #指定创建资源的角色/类型
metadata:                  #资源的元数据/属性
  name:   k8s-test-deploy    #资源的名字,在同一个namespace中必须唯一
  namespace:  dev             #命名空间
  labels: 
    app: k8s-test                  #标签
spec:
  replicas: 2         #副本数量2
  strategy:
    rollingUpdate:   ##由于replicas为3,则整个升级,pod个数在2-4个之间
      maxSurge: 1      #滚动升级时会先启动1个pod
      maxUnavailable: 1 #滚动升级时允许的最大Unavailable的pod个数
  selector:             #定义标签选择器,部署需要管理的pod(带有该标签的的会被管理)需在pod 模板中定义
    matchLabels:
      app: k8s-test
  template:      #这里Pod的定义
    metadata:
      labels:    #Pod的label
        app: k8s-test
    spec:        # 模板的规范  
      containers:  
      - name: k8s-test      #容器的名字  
        image: k8s-test:v1.0  #容器的镜像地址 
        imagePullPolicy: IfNotPresent  
        resources:              ##CPU内存限制
          requests:
            cpu: 2
            memory: 1024Mi
          limits:
            cpu: 2
            memory: 1024Mi
        ports:
          - name: http
            containerPort: 8012 #对service暴露端口           
#vim k8s-test-service.yaml
#创建service
apiVersion: v1
kind: Service
metadata:
  name: k8s-test-service
spec:
  selector:
    app: k8s-test
  ports:
  - protocol: TCP
    port: 8012 # 需要暴露的集群端口(service暴露的)
    targetPort: 8012  # 容器的端口(后端容器提供服务的端口)
  type: NodePort
测试

  • 在其中一个节点上查看容器运行情况

  • 访问测试

原文地址:https://www.cnblogs.com/jinit/p/15071457.html