前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >打造超级富容器开发环境(四):部署富容器

打造超级富容器开发环境(四):部署富容器

原创
作者头像
imroc
发布2024-06-10 09:35:47
630
发布2024-06-10 09:35:47
举报

部署 YAML

编写 Kubernetes 的 YAML 来部署 devcontainer,示例:

代码语言:yaml
复制
apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: devcontainer
  name: devcontainer
  namespace: devcontainer
spec:
  selector:
    matchLabels:
      app: devcontainer
  template:
    metadata:
      labels:
        app: devcontainer
    spec:
      containers:
        - image: your.registry.com/private/devcontainer:latest
          imagePullPolicy: IfNotPresent
          name: devcontainer
          tty: true
          stdin: true
          securityContext:
            privileged: true
            runAsUser: 0
            runAsGroup: 0
          volumeMounts:
            - mountPath: /host
              name: host
              mountPropagation: Bidirectional
            - mountPath: /sys/fs/cgroup
              name: cgroup
              readOnly: true
            - mountPath: /root
              name: root
            - mountPath: /data # host 与容器内保持一致的路径,可用于在容器内运行某些项目的容器构建脚本,路径一致方便host上的dockerd对项目路径mount进容器
              name: data
              mountPropagation: Bidirectional
      dnsPolicy: Default
      hostNetwork: true
      hostPID: false
      restartPolicy: Always
      terminationGracePeriodSeconds: 1
      volumes:
        - name: root
          hostPath:
            path: /data/root
            type: DirectoryOrCreate
        - name: cgroup
          hostPath:
            path: /sys/fs/cgroup
            type: Directory
        - name: host
          hostPath:
            path: /
            type: Directory
        - name: data
          hostPath:
            path: /data
            type: DirectoryOrCreate
  updateStrategy:
    rollingUpdate:
      maxSurge: 0
      maxUnavailable: 1
    type: RollingUpdate

要点解析

编写 YAMl 时注意以下关键点:

  • 镜像填写你构建 devcotnainer 时指定的镜像名称。
  • privileged 置为 true,使用特权容器,避免因权限问题各种报错。
  • dnsPolicy 置为 Default,表示容器内直接使用宿主机所使用的 DNS 解析,保持容器内外的 DNS 解析行为一致。
  • hostNetwork 置为 true,直接使用宿主机的网络,不使用容器网络(没必要)。
  • 将宿主机根目录挂载到容器内的 /host 下,这样就可以在容器内操作宿主机内任意文件,无需登录宿主机的 SSH。
  • 将宿主机的 cgroup 目录(/sys/fs/cgroup)挂载到容器内同路径位置,因为 systemd 依赖这个才能正常运行。
  • 将宿主机的 /data/root 挂载到容器的用户目录(/root),因为很多软件都会写入文件到用户目录下,如果不持久化,容器重启后就会丢失。
  • 将宿主机的 /data 挂载到容器内的相同路径,日常工作用到的源码都存放到 /data 的子目录,这样在容器内外路径都是一致的,避免构建镜像时因 client 和 server 识别到的路径不一致造成异常。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 部署 YAML
  • 要点解析
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档