k8s导入docker镜像之后部署gin项目

本文介绍了如何在Kubernetes中导出和导入Docker镜像,使用`ctr-imageimport`命令,以及部署和管理Ingress-nginx服务的过程,包括创建Deployments、Services和Ingress资源,最终通过浏览器验证部署成功。
摘要由CSDN通过智能技术生成

1. 导出docker镜像

docker save xxx:1.0.0 > xxx.tar

2. 复制到k8s容器内(不是kind安装的忽略)

docker cp xxx.tar kind-control-plane:/images/

3. k8s导入镜像

# --digests=true 这个参数表示导入的镜像没有标签的话自动创建标签
ctr -n k8s.io image import entry_api_1.0.3.tar --digests=true

4. 查看导入的镜像

crictl images

在这里插入图片描述

5. 搭建ingress-nginx 看我的另一篇文章

安装ingress-nginx
https://blog.csdn.net/qq_39272466/article/details/132062677?spm=1001.2014.3001.5501

6. 创建deploy、service、ingress

deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: xxx-api-deploy
  namespace: dev
spec:
  replicas: 1
  selector:
    matchLabels:
      app: xxx-api-pod
  template:
    metadata:
      labels:
        app: xxx-api-pod
    spec:
      containers:
      - name: xxx-api
        image: library/xxx_api:1.0.3
        ports:
        - containerPort: 8080

service.yaml

apiVersion: v1 # api 版本
kind: Service # 对象类型
metadata: # 元数据
  name: xxx-api-svc # 对象名称
  namespace: dev
spec: # 规约
  selector: # 选择器
    app: xxx-api-pod # 标签选择器,与 Pod 的标签对应
  ports:
    - port: 8081 # Service 端口号
      targetPort: 8080 # Pod 暴露的端口号

ingress.yaml

apiVersion: networking.k8s.io/v1 # api 版本
kind: Ingress # 对象类型
metadata: # 元数据
  name: xxx-api-ingress # 对应名称
  namespace: dev
spec: # 规约
  ingressClassName: nginx
  rules: # 规则
    - host: xxx.api.com
      http:
        paths: # 路径
          - path: /
            pathType: Prefix
            backend: # 后端服务
              service: # 服务
                name: xxx-api-svc # service 名称
                port:
                  number: 8081 # 端口号

部署项目

kubectl create ns dev
kubectl apply -f deploy.yaml
kubectl apply -f service.yaml
kubectl apply -f ingress.yaml
kubectl get pod,svc -n dev
kubectl describe ing -n dev
kubectl get svc -n ingress-nginx

在这里插入图片描述

通过浏览器访问 ok部署好了

http://xx.api.com:30080/
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes部署 Docker 镜像,需要先创建一个 Deployment 对象来定义你的应用程序的期望状态,然后使用 Service 对象来暴露该 Deployment。 以下是一些基本步骤: 1. 构建 Docker 镜像并将其上传到一个可公开访问的镜像仓库中(如 Docker Hub)。 2. 创建一个 Deployment 对象,定义你的应用程序的期望状态和副本数。你可以使用 kubectl create 命令,也可以编写一个 YAML 文件来创建 Deployment。 3. 创建一个 Service 对象来暴露 Deployment,以便其他应用程序可以访问它。这可以通过 kubectl expose 命令或编写一个 YAML 文件来完成。 4. 确保你的 Kubernetes 集群中已经正确配置了 Docker 运行时,并且已经安装了 kubectl 命令行工具。 5. 运行 kubectl apply 命令来部署你的应用程序。 以下是一个简单的 YAML 文件示例,可以用于创建一个 Deployment 和一个 Service: ``` apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-app image: my-docker-image:latest ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: my-app-service spec: selector: app: my-app ports: - name: http port: 80 targetPort: 8080 ``` 在这个示例中,我们假设已经将 Docker 镜像上传到 Docker Hub 中,并通过 my-docker-image:latest 引用它。我们定义了一个名为 my-app 的 Deployment,期望有三个副本,使用容器端口 8080。然后,我们创建了一个名为 my-app-service 的 Service,它将流量路由到 Deployment 中的容器端口 8080。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值