前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EKS集群如何部署docker客户端工具

EKS集群如何部署docker客户端工具

原创
作者头像
聂伟星
发布2022-08-11 13:40:56
1.3K0
发布2022-08-11 13:40:56
举报

弹性容器服务(Elastic Kubernetes Service,EKS)是腾讯云容器服务推出的无须用户购买节点即可部署工作负载的服务模式。弹性容器服务 EKS 完全兼容原生 Kubernetes,支持使用原生方式购买及管理资源,按照容器真实使用的资源量计费。弹性容器服务 EKS 还扩展支持腾讯云的存储及网络等产品,同时确保用户容器的安全隔离,开箱即用。

现在很多业务都部署到了eks上,部署的过程中,会遇到一些部署的问题,比如pod因为镜像拉取失败起不来,但是eks是没有节点的,无法执行docker命令测试,那么我要怎么测试eks内拉取镜像呢? 很多人会想到,可以采用docker in docker的方式,但是这个方式是需要挂载节点的docker.sock的,eks没有节点,每个pod相当于一台精简的cvm,并且pod底层用的也不是docker,而是containerd,那是不是就没有办法用docker命令来测试拉取镜像? 其实这里我们可以在集群部署一个deploy,配置2个容器,一个容器作为docker服务端,然后另外一个容器作为docker客户端,这2个容器共享docker.sock文件,然后就可以在客户端容器执行docker命令了。

具体的部署可以参考下面yaml文件

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    k8s-app: docker-in-containerd
    qcloud-app: docker-in-containerd
  name: docker-in-containerd
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s-app: docker-in-containerd
      qcloud-app: docker-in-containerd
  template:
    metadata:
      annotations:
        eks.tke.cloud.tencent.com/root-cbs-size: "20"
      labels:
        k8s-app: docker-in-containerd
        qcloud-app: docker-in-containerd
    spec:
      affinity: {}
      containers:
      - command:
        - dockerd
        - --host=unix:///var/run/docker.sock
        - --host=tcp://0.0.0.0:8000
        image: docker:stable-dind
        imagePullPolicy: IfNotPresent
        name: docker-ci
        resources:
          limits:
            cpu: 500m
            memory: 1Gi
          requests:
            cpu: 250m
            memory: 256Mi
        securityContext:
          privileged: true
        volumeMounts:
        - mountPath: /var/run
          name: host
      - command:
        - sleep
        - 70d
        image: docker:stable
        imagePullPolicy: IfNotPresent
        name: client
        resources:
          limits:
            cpu: 500m
            memory: 1Gi
          requests:
            cpu: 250m
            memory: 256Mi
        securityContext:
          privileged: true
        volumeMounts:
        - mountPath: /var/run
          name: host
      dnsPolicy: ClusterFirst
      imagePullSecrets:
      - name: qcloudregistrykey
      restartPolicy: Always
      schedulerName: default-scheduler
      volumes:
      - emptyDir: {}
        name: host

yaml说明:

  • docker-ci容器作为docker服务端
  • client作为容器客户端
  • 通过emptyDir,2个容器共享/var/run/docker.sock文件
  • 2个容器都需要开启特权模式,不然docker服务端起不来

pod启动正常后,登陆client容器就可以执行docker命令了,下面我们测试下,用sh的方式登陆client容器

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档