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

相关推荐
Lvan的前端笔记7 小时前
docker:每个前端项目一个 Nginx 容器还是只有一个Nginx容器
前端·nginx·docker
谢亮_vipxieliang10 小时前
Kubernetes 的“操作系统化”:从容器编排到 AI 基础设施控制平面
人工智能·平面·kubernetes
sbjdhjd12 小时前
云安全 | Docker 容器逃逸复盘(三):docker.sock 挂载与 Docker-in-Docker 风险
经验分享·网络安全·docker·云原生·容器·kubernetes·云安全
热爱Liunx的丘丘人13 小时前
1、什么是K8s
云原生·容器·kubernetes
帷幕落秋14 小时前
Docker的两种安装
运维·docker·容器
工业一体机老司机14 小时前
工业一体机选购后的系统部署:Ubuntu下Docker容器化运行与GPIO配置
linux·ubuntu·docker·人机交互
fengkai454514 小时前
十二、Redis -2
运维·数据库·redis·容器
DolitD16 小时前
3D应用多实例并发中的GPU隔离技术路径分析
容器·gru·接口隔离原则
姜鱼问生18 小时前
docker exec 排查容器问题:从日志到进程
运维·网络·数据库·docker·容器
人生百态,人生如梦19 小时前
Ubuntu在低版本下使用ccswitch+claudecode(CCSwitch+Docker+Claude)连调教程
linux·ubuntu·docker·claudecode·ccswitch