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/