通过k8s搭建部署服务(nacos为例)
命令查看下载的镜像,当然你也可以自己通过DockerFile来手动创建镜像,下面我自己写的简单的nacos镜像,nacos也是直接从官网下载来的,通过命令复制到容器中并运行(这种方式也可以直接用在java部署上,复制相应的jar包,最后执行相应脚本就可以)这个文章只是重述一下简单的k8s部署,实际上k8s的yaml文件中kind的类型貌似一共有10种,可以直接配置比如挂载卷、deployment与
前言:写这篇文章也算是自己对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一体等好些操作,我自己再研究研究,感觉有必要就在写写文章记录一下。
更多推荐
所有评论(0)