k8s部署springboot项目,zookeeper,redis,pgsl

3 篇文章 0 订阅
2 篇文章 0 订阅

安装环境

  • 操作系统:centos7
  • docker:1.13.1
  • k8s: 1.5.2(单节点)
  • 如果没有安装docker和k8s的参照我前一篇博客安装安装k8s踩的一些坑

部署安装步骤

1、先在docker里面安装redis、pgsql、zookeeper、
 1.1  docker search imageName //搜索镜像 选择合适版本然后
 1.2  docker pull imageName //拉下镜像
 1.3  docker images //查看自己的镜像仓库是否有
 1.4  docker运行zookeeper、redis、pgsql安装:
     docker run -d docker.io/redis  --name myredis -p 6379:6379 redis --requirepass "123456"
     docker run --name postgres -e POSTGRES_PASSWORD=123456 -p 5432:5432 -d docker.io/borgius/pgsql 
     docker run --privileged=true -d --name zookeeper1 --publish 2181:2181  -d docker.io/zookeeper
2、将自己的服务打成镜像、(此处有2个服务、server、web服务)

2.1 创建Dockerfile文件、文件内容如下、(此处为了方便,很多地方简写:如果是部署在
生产环境上,需要修改下日志目录,以及启动方式) server dockerfile文件内容

FROM java:8
VOLUME /tmp    
COPY resources/* resources/ 
ADD  service-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

2.2 执行docker build -t 镜像名字 . 命令进行构建镜像、成功后使用docker images
查看自己的镜像是否生成(注意镜像名字后面有个空格和一个点. 表示当前目录下)、
如果镜像没有生成需要重新执行构建,排查问题
2.3 创建web docker镜像:同上 Dockerfile 文件内容如下:

 FROM java:8
VOLUME /tmp    
COPY resources/* resources/ 
ADD  web-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"] 
3、将server项目,和web项目部署到k8s里面、使用环境变量连接外面数据源

3.1 执行命令 kubectl get node 查看节点是否正常(单节点如下:)

  NAME        STATUS    AGE
  127.0.0.1   Ready     6d

3.2 创建server、web项目的yaml文件、文件内容如下:

  注意:  对于文件开头apiVersion版本:内容与k8s版本相关:
  1.6版本之前 apiVsersion:extensions/v1beta1
  1.6版本到1.9版本之间:apps/v1beta1
  1.9版本之后:apps/v1
  具体详情可参考:

k8s的apiversion版本
server.yaml 文件内容:

 apiVersion: extensions/v1beta1
 kind: Deployment
 metadata:
      name: server
      labels:
      app: server
 spec:
     replicas: 1
     selector:
     matchLabels:
     app: server
template:
metadata:
  labels:
    app: server
spec:
  containers:
  - name: server
    image: server //镜像名字
    imagePullPolicy: Never  //表示从本地docker镜像中获取镜像
    ports:
    - containerPort: 8087  //端口
    env:    //配置的环境变量
      - name:  ZOOKEEPER_HOST  //zookeeper ip地址
        value: '10.62.155.12'
      - name:  ZOOKEEPER_PORT //zookeeper 端口
        value:  '2181'
      - name:  REDIS_HOST   //redis
        value: '10.62.155.12'
      - name:  REDIS_PASSWORD  //密码
        value: "123456"
      - name: PGSQL_SERVICE_HOST 
        value:  '10.62.55.12'
      - name: PGSQL_SERVICE_PORT
        value: "5432"
      - name:  PGSQL_PASSWORD
        value: "123456"
      - name:  PGSQL_USERNAME
        value: "postgres"

server-svc.yaml文件内容如下:

apiVersion: v1
kind: Service
metadata:
   name: yty-server
   namespace: default
labels:
app: server
spec:
  type: NodePort
  ports:
  - port: 8087
	 nodePort: 30001  //映射到外部机器端口、默认范围:30000-65535 可修改
  selector:
	 app: server

web.yaml文件内容:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: web
  labels:
    app: web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: web
        image: web
        imagePullPolicy: Never
        ports:
        - containerPort: 80
        env:
          - name:  ZOOKEEPER_HOST
            value: '10.62.155.12'
          - name:  ZOOKEEPER_PORT
            value:  '2181'

web-svc.yaml 文件内容如下:

apiVersion: v1
kind: Service
metadata:
  name: web
  namespace: default
  labels:
    app: web
spec:
  type: NodePort
  ports:
  - port: 80
    nodePort: 30003
  selector:
    app: web

3.3、创建k8s pod服务

1、 执行命令:kubectl create server.yaml
          kubectl create server-svc.yaml
          kubectl create web.yaml
          kubectl create web-svc.yaml
          如果文件单独分开放:比如server.yaml 文件和server-svc文件单独放在一起,
          可使用kubectl apply -f . 命令创建,注意后面有个. 表示当前目录下:
           当更新yaml文件内容时,也可以用kubectl apply -f .来更新Pod
  
2、  执行完创建命令后:执行kubectl get pods 查看pod情况
NAME                          READY     STATUS    RESTARTS   AGE
server-1069855030-kshsf   1/1       Running   0          2d
web-3657954026-vf309      1/1       Running   0          2d
查看 pod项目日志情况:  kubectl logs -f  server-1069855030-kshsf(pod名字)
3、如上:如果status 状态为running 则启动正常。 然后在浏览器输入id+映射端口 + 
项目即可访问
4、一些相关k8s命令
     kubectl logs -f  server-1069855030-kshsf(pod名字)
    kubectl delete pod podName //删除pod 删除Pod的时候还必须删除
                              // deployment 否则还会自动创建
    kubectl get  deployment //查看 deployment  情况
    kubectl delete  deployment   deploymentName//删除 deployment 
    kubectl describe pod server-1069855030-kshsf 查看pod情况
    kubectl delete pod web-3657954026-j6tpq  -n default --force --grace-period=0 //如果无法删除pod,
    可使用此强制删除命令; 慎用
5 备注
  对于使用环境变量中的ip地址:必须在k8s集群机器地址和外部机器地址在同一个局域网中可访问。
  如果使用域名方式,必须搭建k8s集群dns解析才能使用
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要一个 Kubernetes 集群,如果没有的话,可以使用 Minikube 或者其他 Kubernetes 集群搭建方案来搭建一个本地的 Kubernetes 集群。 接下来,你需要创建一个 ZooKeeper 的 Deployment 和 Service: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: zookeeper spec: replicas: 1 selector: matchLabels: app: zookeeper template: metadata: labels: app: zookeeper spec: containers: - name: zookeeper image: zookeeper:3.6.2 ports: - containerPort: 2181 - containerPort: 2888 - containerPort: 3888 volumeMounts: - name: data mountPath: /data volumes: - name: data emptyDir: {} --- apiVersion: v1 kind: Service metadata: name: zookeeper spec: selector: app: zookeeper ports: - name: client port: 2181 protocol: TCP - name: follower port: 2888 protocol: TCP - name: leader port: 3888 protocol: TCP ``` 这个 YAML 文件定义了一个名为 zookeeper 的 Deployment 和一个名为 zookeeper 的 Service。Deployment 使用了 zookeeper:3.6.2 镜像,它会启动一个单节点的 ZooKeeper 实例。Service 会将端口 2181、2888 和 3888 暴露出来,以便于 Kafka 集群连接 ZooKeeper。 然后,你需要创建三个 Kafka 的 Deployment 和 Service,每个 Kafka 集群都需要一个 Deployment 和一个 Service: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: kafka-cluster-1 spec: replicas: 3 selector: matchLabels: app: kafka-cluster-1 template: metadata: labels: app: kafka-cluster-1 spec: containers: - name: kafka image: wurstmeister/kafka:2.13-2.7.0 env: - name: KAFKA_BROKER_ID valueFrom: fieldRef: fieldPath: metadata.uid - name: KAFKA_ADVERTISED_HOST_NAME valueFrom: fieldRef: fieldPath: status.podIP - name: KAFKA_ZOOKEEPER_CONNECT value: zookeeper:2181 - name: KAFKA_LOG_DIRS value: /kafka/kafka-cluster-1 ports: - containerPort: 9092 volumeMounts: - name: data mountPath: /kafka volumes: - name: data emptyDir: {} --- apiVersion: v1 kind: Service metadata: name: kafka-cluster-1 spec: selector: app: kafka-cluster-1 ports: - name: kafka port: 9092 protocol: TCP ``` 你需要将上面的 YAML 文件中的相应字段替换成你自己的配置。这个 YAML 文件定义了一个名为 kafka-cluster-1 的 Deployment 和一个名为 kafka-cluster-1 的 Service。Deployment 使用了 wurstmeister/kafka:2.13-2.7.0 镜像,它会启动三个 Kafka 节点。每个节点会注册到 ZooKeeper 上,Kafka 集群会使用 ZooKeeper 来管理节点、分区和副本。Service 会将端口 9092 暴露出来,以便于外部应用程序连接 Kafka 集群。 同样的方法,你可以创建另外两个 Kafka 集群的 Deployment 和 Service。完成后,你就可以使用 Kafka 集群了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值