K8S部署Java项目实战

FullStack
• 阅读 2932

准备

事先准备好k8s集群,打包你的项目并上传到docker仓库

yaml文件

k8s的yaml文件可以自己手动写(不推荐),也可以通过kubectl create生成,这里不多说了,网上相关的文章多的是。。。下面是我的yaml文件。
test-deployment.yaml

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: test-k8s
  namespace: default
  labels:
    cloud-service-module: test
    app: test-k8s
spec:
  replicas: 3
  selector:
    matchLabels:
      cloud-service-module: test
      app: test-k8s
  template:
    metadata:
      labels:
        app: test-k8s
        cloud-service-module: test
    spec:
      restartPolicy: Always
      containers:
        - name: test-k8s
          image: "test-k8s" # 这里填你自己项目的镜像地址
          imagePullPolicy: "IfNotPresent"
          envFrom:
          - configMapRef:
              name: test-k8s-configmap
          ports:
            - name: tomcat
              containerPort: 8080
          readinessProbe:
            tcpSocket:
              port: 8080
            initialDelaySeconds: 5
            periodSeconds: 10    

test-configmap.yaml

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: test-configmap
data:
  # 我这里写的是项目所需要的环境变量
  test_ip: 172.20.151.111
  test_port: "5555" # 注意这里的value如果是数字需要加上双引号,否则会报错

test-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: test-service
  namespace: default
  labels:
    cloud-service-module: test
    cloud-service-type: java
    cloud-service-category: backend
spec:
  type: ClusterIP
  ports:
  - name: tomcat
    port: 8080
    targetPort: 8080

部署

登陆docker仓库

在你的k8s集群上需要先登录项目镜像所在的仓库,如果不执行该操作,创建pod的时候镜像会拉取失败!!

docker login --username=xxx [你的仓库地址]

看到下图就是登陆成功
K8S部署Java项目实战

注意,登录docker仓库可能会出现如下问题

Error response from daemon: Get https://xxx: dial tcp xxx:443: connect: connection refused

解决方案

vi /usr/lib/systemd/system/docker.service

#添加--insecure-registry=mysql.gift
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry=mysql.gift

#执行命令
systemctl daemon-reload
systemctl restart docker

#查看是否成功
ps -ef|grep docker

[root@k8s-node1 ~]# ps -ef|grep docker
root      7730     1  0 09:26 ?        00:00:20 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry=xxx

重新登录docker仓库问题解决

创建pod

分别执行命令:

kubectl apply -f test-service.yaml
kubectl apply -f test-configmap.yaml
kubectl apply -f test-deployment.yaml

最后通过kubectl get pod,svc命令验证是否部署成功
K8S部署Java项目实战

至此,我们的Java项目就部署成功了!

参考文章:https://blog.csdn.net/java_w/...

点赞
收藏
评论区
推荐文章
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Stella981 Stella981
4年前
Minikube之Win10单机部署
Kubernetes(k8s)是自动化容器操作的开源平台,基于这个平台,你可以进行容器部署,资源调度和集群扩容等操作。如果你曾经用过Docker部署容器,那么可以将Docker看成Kubernetes底层使用的组件,Kubernetes是Docker的上层封装,通过它可以很方便的进行Docker集群的管理。今天我们使用minikube在单机上进行Kubern
Stella981 Stella981
4年前
Kubernetes(k8s)Pod的YAML基础编写
Kubernetes中的Pod一般都是采用yaml编写apiVersion:group/apiversion如果没有给定group名称,那么默认为core,可以使用kubectlapiversions获取当前k8s版本上所有的apiVersion版本信息(每个版本可能不同)kind:
Wesley13 Wesley13
4年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Stella981 Stella981
4年前
HyperLedger Fabric 错误记录
错误1:在阿里云机器上运行环境:signalSIGSEGV:segmentationviolationcode0x1addr0x63pc0x7fecd68ca259需要修改所有相关docker容器yaml文件,在environment中加入image:hyperledger/fabric
Easter79 Easter79
4年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
4年前
Istio技术与实践03:最佳实践之sidecar自动注入
Istio通过对serviceMesh中的每个pod注入sidecar,来实现无侵入式的服务治理能力。其中,sidecar的注入是其能力实现的重要一环(本文主要介绍在kubernetes集群中的注入方式)。sidecar注入有两种方式,一是通过创建webhook资源,利用k8s的webhook能力实现pod的自动注入,二是通过istioctl工具,对yaml
Stella981 Stella981
4年前
SpringBoot系列之@PropertySource读取yaml文件
SpringBoot系列之@PropertySource支持yaml文件读取最近在做实验,想通过@PropertySource注解读取配置文件的属性,进行映射,习惯上用properties都是测试没问题的,偶然换成yaml文件,发现都读取不到属性值因为yaml语法很简洁,比较喜欢写yaml配置文件,很显然,@PropertySource默认不支持ya
Stella981 Stella981
4年前
Kubernetes YAML最佳实践和策略
Kubernetes工作负载最常用YAML格式的文件来定义。YAML的问题之一就是很难描述清单文件之间的约束或关系。如果你希望检查是否已从受信任的注册表中提取部署到群集中的所有映像,该怎么办?如何防止没有Pod安全策略的工作负载提交到集群?集成静态检查可以在更接近开发生命周期的时间内捕获错误和违反策略的行为。并且由于改善了资源定义
Easter79 Easter79
4年前
SpringBoot系列之@PropertySource读取yaml文件
SpringBoot系列之@PropertySource支持yaml文件读取最近在做实验,想通过@PropertySource注解读取配置文件的属性,进行映射,习惯上用properties都是测试没问题的,偶然换成yaml文件,发现都读取不到属性值因为yaml语法很简洁,比较喜欢写yaml配置文件,很显然,@PropertySource默认不支持ya
Stella981 Stella981
4年前
Kubernetes1.15 部署 coredns
coredns.yaml文件如下所示__MACHINE_GENERATED_WARNING__apiVersion:v1kind:ServiceAccountmetadata:name:corednsnamespace:kubesystemlabels