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中。

相关推荐
小张同学a.13 分钟前
Docker 容器实战 2—— docker 仓库
linux·运维·服务器·docker·容器
harmony&2 小时前
ETCD 存储系统实战:从单节点部署到 Kubernetes 高可用集群
数据库·kubernetes·etcd
随便做点啥3 小时前
32卡-64G-910B4-16后端-(Qwen3.8-27B-W8A8)集群部署报告
运维·服务器·经验分享·docker·vllm
CJY62110 小时前
k8spod管理
云原生·容器·kubernetes
Orange_sparkle12 小时前
从 Docker 到 Doris:建立后端基础设施全景图
运维·docker·ai·容器·claude code
gx234814 小时前
控制器管理
docker·容器·kubernetes
白清羽15 小时前
7.3系统安装docker
运维·docker·容器
dazhong201217 小时前
Docker 入门篇(八)-- CentOS7 安装 MySQL 8
mysql·docker·容器
w2005122417 小时前
Pod管理
linux·服务器·云原生·容器·k8s·podman
典典分享指南19 小时前
用大模型把写作 SOP 变成可复用 Prompt
docker·jupyter·eclipse·phpstorm·myeclipse