我第一次设置一个由单节点kubernetes(minikube)组成的CI / CD环境。
在此节点上,我创建了一个PV
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
data-volume 1Gi RWO Retain Bound gitlab-managed-apps/data-volume-claim manual 20m
和PVC
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
data-volume-claim Bound data-volume 1Gi RWO manual 19m
现在,我想创建一个具有多个访问此卷的容器的容器。
您在哪里以及如何建议使用gitlab管道gitlab-ci等进行设置?多个存储库可能最适合该项目。
答案 0 :(得分:2)
这是部署清单文件的完整工作示例,在Pod的规范中,使用相同的PV定义了两个容器(基于不同的nginx docker映像),它们分别在其中从端口80/81提供自定义静态html内容: / p>
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
creationTimestamp: null
generation: 1
labels:
run: nginx
name: nginx
selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/nginx
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
run: nginx
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
run: nginx
spec:
volumes:
- name: my-pv-storage
persistentVolumeClaim:
claimName: my-pv-claim-nginx
containers:
- image: nginx
imagePullPolicy: IfNotPresent
name: nginx
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: my-pv-storage
subPath: html_custom
- image: custom-nginx
imagePullPolicy: IfNotPresent
name: custom-nginx
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: my-pv-storage
subPath: html
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
status: {}
答案 1 :(得分:1)
是的,您可以在一个容器中运行多个容器,共享一个PVC。
在CI / CD中,如果您有多个存储库,并且在一个存储库中包含提交,它将创建新的Docker映像并将其推送到注册表并部署到k8s集群。
在CI / CD中,如果您计划使用latest
标签进行图像标记,则可以在pod中使用多容器。如果仅在一个存储库中进行提交,则将易于管理部署。
如果计划将SHA:hash用于CI / CD标记映像,那么如何管理具有两个容器配置的部署文件。