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

相关推荐
2301_787328492 小时前
50.k8s管理-1和 k8s核心概述-2
云原生·容器·kubernetes
芥子沫2 小时前
docker都没法访问了,都无法安装,镜像也不可以下载,还需要学习docker么
学习·docker
老友@2 小时前
Docker Nginx HTTPS 实战:Let’s Encrypt SSL 证书生成与自动续期
运维·nginx·docker·https·证书·ssl
magnetotell2 小时前
Postgresql 在Windows10 docker上部署踩坑教程
运维·docker·容器
—Qeyser14 小时前
Flutter GestureDetector 完全指南:让任何组件都能响应手势
flutter·云原生·容器·kubernetes
江湖有缘14 小时前
从零开始:基于 Docker Compose部署高可用 Miniflux RSS阅读器
运维·docker·容器
林鸿风采16 小时前
在Alpine Linux上部署docker和Portainer管理工具
linux·运维·docker·portainer
林_学17 小时前
我扔掉了本地环境,从编码到上线只花了3分钟
docker
怜淇18 小时前
docker拉取openjdk8:jre失败
java·docker·容器