k8s部署springboot应用

1.前置条件

已经搭建好kubernetes1.25.4集群

Kubernetes 1.25.4版本安装_V胡桃夹子的博客-CSDN博客

kubeasz安装kubernetes1.25.5_V胡桃夹子的博客-CSDN博客

本文介绍的springboot应用部署,自定义k8s namespacee,部署单节点。

从docker转到containerd,命令行工具ctr和crictl不怎么好用,或者说不怎么熟悉,所有产生nerdctl。
nerdctl是一个较新的containerd工具,兼容docker命令行工具,而且比ctr覆盖更全面,另外还支持docker-compose(不包括swarm)以及一些可选的高级特性。
从使用体验上来说,nerdctl和docker一致的。

安装nerdctl:

mkdir -p nerdctl
cd nerdctl
wget https://github.com/containerd/nerdctl/releases/download/v1.0.0/nerdctl-1.0.0-linux-amd64.tar.gz
tar -xf nerdctl-1.0.0-linux-amd64.tar.gz
cp nerdctl /usr/local/bin/

查看k8s.io工作空间镜像:

nerdctl -n k8s.io image ls

导入本地镜像至k8s.io工作空间
前置条件,已经安装nerdctl

nerdctl load  -i fast-testing.tar.gz --namespace k8s.io

2. 创建springboot部署yaml文件

注意,这里 docker.xxx.io/fast-testing 镜像已提前导入K8s工作空间。
创建springboot应用部署文件 fast-testing-k8s-deployment.yaml

cat > fast-testing-k8s-deployment.yaml<<EOF
---
# namespace
apiVersion: v1    # kubectl api-versions 可看版本信息
kind: Namespace   # k8s资源类型,Namespace资源
metadata:         # 必选,元数据
  name: develop   # 声明工作空间名称
  labels:         # 自定义标签列表
    name: develop # 设置namespace的label标签
---
apiVersion: v1            # kubectl api-versions 可看版本信息
kind: Service             # k8s资源类型,Namespace资源
metadata:                 # 必选,元数据
  namespace: develop      # Pod所属的命名空间,不指定则默认为"default"
  name: fast-testing-app  # 声明名称
  labels:                 # 自定义标签列表
    app: fast-testing-app # 标签名称
spec:
  type: NodePort          # 对外访问的类型
  ports:
  - port: 8888            # 即容器间服务调用的端口,这里的端口和clusterIP对应
    protocol: TCP       
    nodePort: 8888        # 容器所在宿机端口,默认30000-32767之间,除非有改nodepord端口范围,外网IP映射就是将端口映射出去
    targetPort: 8888      # 容器暴露的端口,即当前容器内应用的服务端口,例如Tomcat 8080
  selector:
    app: fast-testing-app # 选中上面的 Deployment
---
apiVersion: apps/v1           # kubectl api-versions 可看版本信息
kind: Deployment              # 部署
metadata:
  namespace: develop          # Pod所属的命名空间,不指定则默认为"default"
  name: fast-testing-app      # 部署的pod名称
  labels:
    app: fast-testing-app     # 标签
spec:
  replicas: 1                 # Pod 副本的期待数量
  selector:
    matchLabels:
      app: fast-testing-app   # 满足标签为这个的时候相关的pod才能被调度到
  template:
    metadata:
      labels:
        app: fast-testing-app # Pod副本拥有的标签,对应Selector
    spec:
      hostAliases:            # 映射容器内的host地址
      - ip: 10.6.1.166
        hostnames:
        - "redis"
      - ip: 10.4.19.105
        hostnames:
        - "zookeeper"
      containers:             # 必选,Pod中容器列表
      - name: fast-testing    # 给容器取的名称
        image: docker.xxx.io/fast-testing # 镜像地址
        # Always:总是拉取;IfNotPresent:默认值,本地有则不拉取;Never:只用本地镜像,从不拉取;
        imagePullPolicy: Never
EOF

3. 部署

一键部署命令:

kubectl apply -f fast-testing-k8s-deployment.yaml

一键回收命令:

kubectl delete -f fast-testing-k8s-deployment.yaml

4.引用Reference

CentOS8搭建nfs服务
Kubernetes 1.25.4版本安装
kubeasz安装kubernetes1.25.5
k8s一键安装redis单机版
k8s一键安装mysql8单机版
k8s部署springboot应用
Docker安装及学习
Docker制作springboot运行应用镜像
Docker制作Java8环境镜像
Docker安装Mysql5.7.31
Docker安装Mysql8.1.0
Elasticsearch单机版本安装
Elasticsearch集群安装
ELK安装
Docker安装ELK
zookeeper集群安装
Nginx日志切割
RabbitMQ集群安装
springboot集成prometheus+grafana
windows11安装android应用

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐