首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes yaml部署-无法创建符号链接

Kubernetes yaml部署-无法创建符号链接
EN

Stack Overflow用户
提问于 2021-12-15 13:59:52
回答 2查看 495关注 0票数 1

我正在尝试进行nginx部署,在容器创建过程中,我希望创建多个符号链接。但由于某种原因,它不能工作,集装箱崩溃。

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: tcc
    component: nginx
  name: tcc-nginx-deployment
  namespace: dev2
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tcc
      component: nginx
  template:
    metadata:
      labels:
        app: tcc
        component: nginx
    spec:
      containers:
      - image: nginx
        name: nginx
        command:
              - /bin/sh
              - -c
              - |
                ln -s /shared/apps/ /var/www
                rm -r /etc/nginx/conf.d
                ln -s /shared/nginx-config/ /etc/nginx/conf.d

        ports:
        - containerPort: 80
          protocol: TCP
        volumeMounts:
        - mountPath: /shared
          name: efs-pvc
      volumes:
      - name: efs-pvc
        persistentVolumeClaim:
          claimName: tcc-efs-storage-claim
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-16 10:23:25

容器没有运行,因为在执行command块之后,容器就退出了,这是预期的行为。

与其在yaml模板中使用command中的符号链接(这不是最佳实践解决方案),为什么不使用解决方案内置的Kubernetes,而且根本不使用command块?

你应该使用subPath which is designed to share directories from one volume for multiple, different directories on the single pod

有时候,在一个

中共享一个卷用于多个用途是很有用的。volumeMounts.subPath属性指定引用卷内的子路径,而不是根.

在您的例子中,部署yaml应该如下所示:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: tcc
    component: nginx
  name: tcc-nginx-deployment
  namespace: dev2
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tcc
      component: nginx
  template:
    metadata:
      labels:
        app: tcc
        component: nginx
    spec:
      containers:
      - image: nginx
        name: nginx
        ports:
        - containerPort: 80
          protocol: TCP
        volumeMounts:
        - mountPath: /shared
          name: efs-pvc
        - mountPath: /etc/nginx/conf.d
          name: efs-pvc
          subPath: nginx-config
        - mountPath: /var/www
          name: efs-pvc
          subPath: apps
      volumes:
      - name: efs-pvc
        persistentVolumeClaim:
          claimName: tcc-efs-storage-claim

另外,如果您只想为NGINX挂载配置文件,您可以使用ConfigMap而不是卷检查this answer来获取更多信息。

票数 1
EN

Stack Overflow用户

发布于 2021-12-15 15:12:26

  • ,这是因为您只要求容器创建符号链接。所以一旦那些

创建了符号链接,容器正在退出。

  • 以避免添加"nginx" "-g" "daemon off;",如下所示:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: tcc
    component: nginx
  name: tcc-nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tcc
      component: nginx
  template:
    metadata:
      labels:
        app: tcc
        component: nginx
    spec:
      containers:
      - image: nginx
        name: nginx
        imagePullPolicy: IfNotPresent
        command:
              - /bin/sh
              - -c
              - |
                ln -s /shared/apps/ /var/www
                rm -r /etc/nginx/conf.d
                ln -s /shared/nginx-config/ /etc/nginx/conf.d
                "nginx" "-g" "daemon off;" ; # after creating above symbolic links it will start nginx daemon 
        ports:
        - containerPort: 80
          protocol: TCP
        volumeMounts:
        - mountPath: /shared
          name: efs-pvc
      volumes:
      - name: efs-pvc
        persistentVolumeClaim:
          claimName: tcc-efs-storage-claim
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70364991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档