通过k8s搭建部署服务(nacos为例)

前言:写这篇文章也算是自己对k8s的一种学习,加深一下k8s对服务部署的印象。

环境:使用的本地windows系统下的docker desktop工具,高版本的docker desktop自带了k8s服务所以就不需要特地去linux系统上装k8s了。docker desktop相当于在windows系统下配置了docker环境和k8s环境,可以直接在powershell控制台中执行docker以及k8s的相关命令。

1.创建镜像:

这里我没有自己去创建一个nacos的镜像,而是通过docker拉取镜像的命令从仓库下载了nacos最新的镜像。

docker pull nacos/nacos-server

下载完成后可以通过 docker images 命令查看下载的镜像,当然你也可以自己通过DockerFile来手动创建镜像,下面我自己写的简单的nacos镜像,nacos也是直接从官网下载来的,通过命令复制到容器中并运行(这种方式也可以直接用在java部署上,复制相应的jar包,最后执行相应脚本就可以)

 然后是创建镜像命令

docker build -t nacos:v230712.1 -f .\NacosDockerfile .

不过自己创建的nacos镜像遇上好些问题:

1.docker镜像建立好后,启动容器报错 [[ : not found 

问题出在最后执行脚本文件的时候更具不同的系统,脚本开头不同比如ubuntu系统使用bash,linux系统使用sh

 2.如果是容器后台运行,命令执行完后容器就关闭了,我也是懵逼了好久也不知道为什么。

nacos的bin/startup.sh的启动命令原来是

我直接改成,顺带把日志的记录也给删了,这个我不知道会不会影响

不放在后台运行结果就没有再出现容器停止的情况,如果有大佬懂得话麻烦评论区解答一下。

镜像创建好后编写k8s的deployment.yaml文件:

apiVersion: apps/v1
kind: Deployment
metadata: 
    name: nacos-dep
    namespace: tangcfv1
spec:
    replicas: 1
    template:
        metadata: 
            labels:
                app: nacos-dep
        spec: 
            containers:
              - name: k8snacos
                image: nacos:v230712.1 
                ports:
                  - name: http-8848
                    containerPort: 8848
                    name: client
                env: 
                  - name: MODE
                    value: standalone
                  - name: PREFER_HOST_MODE
                    value: hostname
    selector:
        matchLabels:
            app: nacos-dep

执行命令:

kubectl apply -f .\nacos.yaml

运行结果:

 这里启动后外服服务器还不能访问,需要再启动service服务来进行转发service.yaml

apiVersion: v1
kind: Service
metadata:
    name: nacos-service
    namespace: tangcfv1
spec:
    selector:
        app: nacos-dep
    ports:
      - name: web
        port: 8848
        targetPort: 8848
        nodePort: 30001  #这个地方写30001是因为我这个docker desktop启动的时候默认的端口范围是30001~63225,我一下子也不知道那里配置就直接写30001了
    type: NodePort

 执行命令:

kubectl apply -f .\nacos-service.yaml

运行结果: 

 然后直接再浏览器输入:IP + 30001:8848/nacos

 就直接进去啦,不过不知道为啥没有做登录验证,我怀疑可能没有去读conf下面的配置,这个以后再说。

这个文章只是重述一下简单的k8s部署,实际上k8s的yaml文件中kind的类型貌似一共有10种,可以直接配置比如挂载卷、deployment与service一体等好些操作,我自己再研究研究,感觉有必要就在写写文章记录一下。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
你可以使用KubernetesK8s)来部署Nacos服务发现。下面是一个大致的步骤: 1. 首先,确保你已经安装了Kubernetes集群,并且有一个可用的命名空间来部署Nacos。 2. 下载Nacos的发布包,解压缩后进入nacos/conf目录,编辑nacos-server.properties文件。将以下配置修改为对应的值: - server.port:Nacos服务的端口,默认为8848。 - spring.datasource.platform:数据库类型,默认为h2,你可以根据需要修改为其他数据库类型,比如MySQL。 - db.num:数据库连接池数目,默认为1。 - db.url、db.username、db.password:数据库连接信息,根据你的实际情况进行配置。 3. 创建一个Kubernetes Service对象,用于暴露Nacos服务。可以使用以下示例的YAML文件: ```yaml apiVersion: v1 kind: Service metadata: name: nacos spec: selector: app: nacos ports: - protocol: TCP port: 8848 targetPort: 8848 ``` 将上述内容保存为`nacos-service.yaml`文件,并通过命令`kubectl apply -f nacos-service.yaml`来创建Service。 4. 创建一个Kubernetes Deployment对象,用于部署Nacos服务。可以使用以下示例的YAML文件: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: nacos spec: replicas: 1 selector: matchLabels: app: nacos template: metadata: labels: app: nacos spec: containers: - name: nacos image: nacos/nacos-server:latest ports: - containerPort: 8848 volumeMounts: - name: nacos-config mountPath: /home/nacos/init.d/custom.properties subPath: custom.properties volumes: - name: nacos-config configMap: name: nacos-config items: - key: custom.properties path: custom.properties ``` 将上述内容保存为`nacos-deployment.yaml`文件,并通过命令`kubectl apply -f nacos-deployment.yaml`来创建Deployment。 5. 创建一个ConfigMap对象,用于存储Nacos的配置文件。可以使用以下示例的YAML文件: ```yaml apiVersion: v1 kind: ConfigMap metadata: name: nacos-config data: custom.properties: | server.port=8848 spring.datasource.platform=h2 db.num=1 db.url=jdbc:h2:file:/home/nacos/data/nacos;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE db.driver=com.h2database.h2.Driver db.user=nacos db.password=nacos ``` 将上述内容保存为`nacos-configmap.yaml`文件,并通过命令`kubectl apply -f nacos-configmap.yaml`来创建ConfigMap。 6. 等待一段时间,Nacos服务就会在Kubernetes集群中部署完成,并且可以通过Service的ClusterIP访问。你可以使用命令`kubectl get services`来获取Nacos服务的ClusterIP。 请注意,上述步骤只是一个基本的示例,你可以根据你的具体需求进行调整和修改。此外,为了确保高可用性,你可能还需要考虑使用多个Nacos实例和数据持久化等方面的配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值