k8s中部署rsyncd

私有化部署中,有一个比较耗时的操作是地图数据的上传。每次都需要手动将地图数据拷贝到k8s的PVC中。为了解决这个问题,通过pod部署一个rsyncd守护进程,并通过NodePort类型Service将服务暴露出来以方便同事上传。

镜像来源"https://hub.docker.com/r/servercontainers/rsync"。

创建配置文件和凭据文件,

配置文件rsyncd.conf:

复制代码
    use chroot = false
    strict modes = false
    hosts allow = *
    log file = /data/rsyncd.log
    auth users = rsyncuser
    secrets file = /etc/rsyncd.secrets

    [map]
    path = /data/map
    read only = false
    transfer logging = yes
    hosts allow = *
    uid = 0   #实际使用按照要求修改
    gid = 0   #实际使用按照要求修改

凭据文件rsyncd.secrets:

复制代码
rsyncuser:longlongpassword

命令行方式创建configmap,

复制代码
kubectl create configmap cmrsyncd --from-file=rsyncd.secrets --from-file=rsyncd.conf

rsyncd的yaml文件,

复制代码
apiVersion: v1
kind: Service
metadata:
    name: rsyncd
spec:
    type: NodePort
    ports:
    - name: rsyncd
      port: 873
      targetPort: 873
      protocol: TCP
      nodePort: 30010
    selector:
      app: rsyncd
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: rsyncd
  labels:
    app: rsyncd
spec:
  replicas: 1
  selector:
    matchLabels:
      app: rsyncd
  template:
    metadata:
      labels:
        app: rsyncd
    spec:
      containers:
        - name: rsyncd
          image: servercontainers/rsync:latest
          ports:
            - containerPort: 873
          volumeMounts:
            - name: data-volume
              mountPath: /data
            - name: cmrsyncd
              mountPath: /etc/rsyncd.conf
              subPath: rsyncd.conf
              readOnly: true
            - name: cmrsyncd
              mountPath: /etc/rsyncd.secrets
              subPath: rsyncd.secrets
              readOnly: true
          resources:
           limits:
             cpu: 200m
             memory: 512Mi
           requests:
             cpu: 100m
             memory: 128Mi  
      volumes:
        - name: cmrsyncd
          configMap:
            name: cmrsyncd 
        - name: data-volume
          persistentVolumeClaim:
            claimName: data-pvc

上传命令如下,

复制代码
# 上传文件map.data
rsync -avz map.data  rsyncuser@192.168.1.1::map  --port 30010

如果不想每次手动输入密码,可以将密码写入文件rsync.pass中,并将文件权限改为"600"

复制代码
# 修改文件权限
chmod 600 rsync.pass

# 上传文件map.data
rsync -avz map.data  rsyncuser@192.168.1.1::map --password-file=./rsync.pass --port 30010

这样文件就会上传到容器目录"/data/map"中,也即上传到PVC中。

相关推荐
修罗王14 小时前
Linux Docker 服务管理与排查实战指南(新手速查版)
运维·docker
云川之下16 小时前
【k8s】NAD(NetworkAttachmentDefinition)与SR‑IOV‑Operator 关系
云原生·容器·kubernetes
张龙68716 小时前
Docker 镜像瘦身实战:从 1.2GB 到 128MB,我踩过的 7 个坑和一套可复制的方法论
运维·后端·docker
杨浦老苏18 小时前
开源堡垒机 Warpgate:一个容器搞定 SSH、MySQL 和 Web 访问
运维·docker·ssh·堡垒机·群晖
ERD Online19 小时前
docker-compose 一键部署的 MIT 开源数据库建模平台
数据库·docker·开源
ZzzZZzzzZZZzzzz…19 小时前
K8S实战:NFS+StorageClass+PV/PVC+Deployment
运维·云原生·容器·kubernetes·storageclass·linux运维·持久卷
三言老师20 小时前
CentOS7.9 + Kubernetes 1.18.20 -清理所有 docker / containerd 残留
docker·容器·kubernetes
circuitsosk20 小时前
从Docker到Kubernetes:AI应用服务化与弹性伸缩的落地实践
人工智能·docker·kubernetes·ai应用部署
AAA@峥20 小时前
K8s 配置管理实战:ConfigMap 与 Secret 完整使用指南
kubernetes·云计算
showyoui21 小时前
K8s 集群迁移踩坑:Istio 升级后 nginx 403
网络·docker·kubernetes·istio·service_mesh