
quanted/mongo本指南详细介绍了搭建本地Kubernetes开发所需的所有工具,帮助开发者在本地环境中使用Kubernetes进行开发。Kubernetes可在多种环境中运行,每种环境需要不同的配置和工具。本地开发将结合Minikube、VirtualBox和Docker,搭建单节点Kubernetes集群。
官方Kubernetes文档:链接
可选工具(非必需):
Minikube是本地部署单节点Kubernetes集群的工具,虽与服务器或云部署不同,但提供了本地开发和测试环境。官方GitHub仓库。
安装所有依赖后,启动Minikube非常简单:
shell$ minikube start
成功启动后,将创建Minikube虚拟机并更新Kubernetes配置。若使用Hyper-V,需指定虚拟机驱动和虚拟网络交换机:
shell$ minikube start --vm-driver hyperv --hyperv-virtual-switch "MY_VIRTUAL_SWITCH"
(需提前创建虚拟交换机,Hyper-V虚拟交换机详情见链接)
使用-p标志修改默认虚拟机名称:
shell$ minikube start -p my-minikube
获取Minikube VM IP(结合NodePort可访问集群部署):
shell$ minikube ip
打开Minikube集群仪表板:
shell$ minikube dashboard
(qed_kube非必需)
Kompose.io是Kubernetes工具,用于将docker-compose文件转换为kubectl可使用的YAML文件,或直接将docker-compose编排部署为Kubernetes。官方GitHub仓库。
转换docker-compose.yml:
shell$ kompose convert -f ./docker-compose.yml
默认副本数为1,卷类型为“persistentVolumeClaim”,可通过参数修改:
shell$ kompose convert -f ./docker-compose.yml --replicas 3 --volumes "hostPath"
在当前目录启动docker-compose.yml定义的服务:
shell$ kompose up
支持指定副本数和卷类型:
shell$ kompose up -f ./docker-compose.yml --replicas 3 --volumes "hostPath"
Kompose up默认会构建并推送镜像到Docker仓库。使用第三方镜像(如MongoDB)时,可搭建本地仓库:
shell$ docker run -d -p 5000:5000 --restart=always --name registry registry:2
将镜像仓库地址改为localhost:5000/qed_django即可推送到本地仓库。macOS可能需修改~/.docker/conf.json处理认证问题。
注意:Kompose仅支持docker-compose主要版本('1.0'、'2.0'、'3.0'),暂无计划支持3.0以上版本。
Kubectl速查表
Kubernetes CLI提供创建Kubernetes组件和故障排查的所有命令,功能类似docker-compose或docker,但不构建镜像。以下是常用命令(主要基于YAML文件操作):
创建资源(从YAML文件):
shell$ kubectl create -f qed-django-deployment.yml
删除资源:
shell$ kubectl delete deploy qed-django
资源类型可替换为pod、service、deploy(部署)、sts(有状态集)、pv(持久卷)、pvc(持久卷声明)等,使用--all删除所有同类资源。
查看资源:
shell$ kubectl get pods
描述资源配置:
shell$ kubectl describe deploy qed-django
更新资源配置(如扩展副本数):
shell$ kubectl scale --replicas=5 -f qed-django-deployment.yml
查看Pod日志:
shell$ kubectl logs qed-django
进入Pod:
shell$ kubectl exec -it qed-django -- /bin/bash
采用“每个Pod一个容器”设计,每个Docker容器对应一个Deployment。Deployment定义期望状态(包含副本集和Pod),外部访问的容器需通过Service定义访问方式(端口等)。
set-absolute-path.sh脚本动态更新路径(从backups/复制YAML文件并替换hostPath源路径为当前目录)data-setup.sh(未完成):下载并组织持久卷数据qed-deploy-start.sh:创建所有QED部署qed-service-start.sh:创建所有QED服务qed-volume-start.sh:创建所有持久卷和持久卷声明qed-start.sh:依次执行set-absolute-path.sh、qed-volume-start.sh、qed-service-start.sh、qed-deploy-start.shqed-stop.sh:删除所有QED Kubernetes资源set-absolute-path.sh:更新卷hostPath源路径为当前目录qed-nginx-service.yml(定义80、443、7777端口访问)qed-nginx-deployment.yml(定义容器,包含certs和静态文件的hostPath卷)qed-django-service.yml(定义8080端口访问)qed-django-deployment.yml(定义容器,包含secrets、collected_static等hostPath卷)qed-django-persistentVolumeClaim.yml(访问持久数据库文件)qed-flask-service.yml(定义8080端口访问)qed-flask-deployment.yml(定义容器,包含collected_static等hostPath卷)qed-flask-persistentVolumeClaim.yml(访问持久数据库文件)qed-celery-deployment.yml(定义容器,包含collected_static等hostPath卷)qed-celery-persistentVolumeClaim.yml(访问持久数据库文件)celery-flower-service.yml(定义5555端口访问)celery-flower-deployment.yml(定义容器)cts-nodejs-service.yml(定义4000端口访问)cts-nodesj-deployment.yml(定义容器)cts-manager-deployment.yml(定义容器)cts-worker-deployment.yml(定义容器)redis-service.yml(定义6379端口访问)redis-deployment.yml(定义容器)redis-persistentVolumeClaim.ymlmongodb-service.yml(定义27017端口访问)mongodb-statefulset.yml(定义容器)mongodb-persistentVolumeClaim.ymlhms-dotnetcore-service.yml(定义80端口访问)hms-dotnetcore-deployment.yml(定义容器,包含App_Data和数据库文件的hostPath卷)dask-scheduler-service.yml(定义8786、8787端口访问)dask-scheduler-deployment.yml(定义容器)qed-dask-worker-deployment.yml(定义容器,包含qed的hostPath卷)qed-tomcat-service.yml(定义80:8080端口访问)qed-tomcat-deployment.yml(定义容器,包含secrets、license等hostPath卷)postgres-service.yml(定义5432端口访问)postgres-statefulset.yml(定义容器)postgres-persistentVolumeClaim.ymlqed-django-persistentVolume.ymlqed-flask-persistentVolume.ymlqed-celery-persistentVolume.ymlredis-persistentVolume.ymlmongodb-persistentVolume.ymlpostgres-persistentVolume.yml| 部署 | Docker镜像 | 构建状态 |
|---|---|---|
| qed-nginx-deployment.yml | quanted/qed_nginx | !Docker Build Status |
| qed-django-deployment.yml | quanted/qed-django | !Docker Build Status |
| qed-flask-deployment.yml | quanted/flask_qed | !Docker Build Status |
| qed-celery-deployment.yml | quanted/flask_qed | !Docker Build Status |
| cts-nodejs-deployment.yml | quanted/cts_nodejs | !Docker Build Status |
| cts-celery-deployment.yml | quanted/cts_celery | !Docker Build Status |
| cts-worker-deployment.yml | quanted/cts_celery | !Docker Build Status |
| redis-deployment.yml | quanted/redis | !Docker Build Status |
| mongodb-deployment.yml | quanted/mongo | !Docker Build Status |
| hms-dotnetcore-deployment.yml | quanted/hms-dotnetcore | !Docker Build Status |
| dask-scheduler-deployment.yml | quanted/qed-dask | !Docker Build Status |
| dask-worker-deployment.yml | quanted/qed-dask | !Docker Build Status |
| qed-tomcat-deployment.yml | quanted/tomcat | !Docker Build Status |
| postgres-deployment.yml | mdillon/postgis | !Docker Cloud Build Status |


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务