首页
友情链接
关于
Search
1
Docker 拉取镜像报错 “missing signature key” 解决办法
1,257 阅读
2
如何在CentOS 7中升级Linux内核
438 阅读
3
docker 常用命令
192 阅读
4
k8s 常用命令
190 阅读
5
Ubuntu 系统LVM 磁盘扩容
157 阅读
默认分类
Liinux系统管理
容器
云计算
虚拟化
编程语言
数据库
登录
/
注册
Search
标签搜索
Docker
shell脚本
Linux 系统管理
k8s
LVM
KVM
网络服务
Nginx
Ubuntu
内核升级
Linux用户管理
系统管理
MySQL
共享存储
Abbott
累计撰写
35
篇文章
累计收到
2
条评论
首页
栏目
默认分类
Liinux系统管理
容器
云计算
虚拟化
编程语言
数据库
页面
友情链接
关于
搜索到
4
篇与
的结果
2024-12-04
StarVCenter 构建私有云方案(小型)
StarVCenter 私有云部署 一套国产超融合云平台IaaS软件,StarVCenter还提供了超融合技术,将计算、存储和网络等资源整合到一个硬件节点中,形成一个完整的虚拟化基础设施。这种超融合架构可以提高资源利用率,减少部署和维护成本,同时还可以提供更高的性能和可靠性。官网文档:StarVCenter帮助文档StarVCenter的超融合技术包括以下特点:硬件节点整合:将计算、存储和网络等资源整合到一个硬件节点中,形成一个完整的虚拟化基础设施。简化部署:通过自动化部署和配置,简化了整个虚拟化环境的部署和维护。高性能和可靠性:通过整合计算、存储和网络等资源,提高了系统的性能和可靠性。灵活扩展:支持在线扩容和缩容,可以根据业务需要灵活调整资源。总之,StarVCenter的超融合技术可以帮助用户实现高效的虚拟化基础设施部署和管理,提高资源利用率和降低成本。StarVCenter追求极致好用,社区免费使用(不超过20台物理服务器)、社区免费技术支持、永久免费升级。除了基本的虚拟化管理功能,StarVCenter还提供了一些高级功能,如:多云管理:支持管理多个云平台,包括公有云和私有云,提供了跨云平台的资源管理和调度功能。容器管理:支持管理容器化应用,如Docker和Kubernetes,可以实现容器的部署、管理和监控。自动化运维:支持自动化运维功能,如自动化部署、配置管理、故障诊断和性能优化等,提高运维效率和减少人为错误。安全管理:提供了安全管理功能,包括访问控制、审计和日志管理等,保障虚拟化环境的安全性。[项目白皮书]:(http://www.starvcs.com/white_paper.pdf)
2024年12月04日
36 阅读
0 评论
1 点赞
2024-07-08
RedHat /CentOS 7 install NFS
NFS 代表网络文件系统,它可以帮助您在 Linux / Unix 系统之间共享文件和文件夹。NFS 使您能够在本地挂载远程共享NFS 的优点在 *nix 系统之间共享文件/文件夹允许在本地挂载远程文件系统可作为集中存储系统它可以用作VMware和其他虚拟化平台的存储域(数据存储)。允许应用程序与多个节点共享配置和数据文件。允许在共享中更新文件。配置 NFS 服务器安装 NFS 服务器使用 yum 命令为 NFS 服务器安装以下软件包。yum install -y nfs-utils-安装软件包后,启用并启动 NFS 服务。 systemctl start nfs-server rpcbind systemctl enable nfs-server rpcbind创建 NFS 共享现在,让我们创建一个要与 NFS 客户端共享的目录。在这里,我将在 / 分区中创建一个名为 nfs_vlome 的新目录。# mkdir /nfs_vlome允许 NFS 客户端读取和写入创建的目录。chmod 777 /nfs_vlome/我们必须修改 /etc/exports 文件以创建您想要共享的目录 /nfs_vlome 的条目# vim /etc/exports并添加此内容/nfs_vlome 192.168.212.42(rw,sync,no_root_squash)192.168.212.42: 客户端计算机的 IP 地址。我们也可以使用主机名而不是 IP 地址。还可以使用子网(如 192.168.100.0/24)定义客户端的范围。rw: 共享文件夹的可写权限sync:对相应文件系统的所有更改都会立即刷新到磁盘;正在等待相应的写入操作。no_root_squash:默认情况下,root 用户在客户端计算机上发出的任何文件请求都将被视为服务器上的 nobody 用户。(请求映射到哪个 UID 取决于服务器上用户“nobody”的 UID,而不是客户端。如果选择了 no_root_squash,则客户端计算机上的 root 用户对系统上的文件的访问级别将与服务器上的 root 用户相同。使用以下命令导出共享目录。exportfs -r配置 NFS 服务器后,我们需要在 NFS 客户端中挂载该共享目录。配置防火墙规则我们需要在 NFS 服务器上配置防火墙,以允许 NFS 客户端访问 NFS 共享。为此,请在 NFS 服务器上运行以下命令:firewall-cmd --permanent --add-service mountd firewall-cmd --permanent --add-service rpc-bind firewall-cmd --permanent --add-service nfs firewall-cmd --reload
2024年07月08日
98 阅读
0 评论
0 点赞
2024-03-28
k8s 常用命令
kubernetes 常用命令以下是一些常用的Kubernetes命令:查看集群信息和节点状态:kubectl cluster-info:查看集群信息。kubectl get nodes:查看所有节点的状态。查看和管理资源:kubectl get pods:查看所有Pod的状态。kubectl get deployments:查看所有部署的状态。kubectl get services:查看所有服务的状态。kubectl get namespaces:查看所有命名空间的状态。kubectl describe <resource_type> <resource_name>:查看特定资源的详细信息。kubectl delete <resource_type> <resource_name>:删除特定资源。创建和管理资源:kubectl create -f <yaml_file>:使用YAML文件创建资源。kubectl apply -f <yaml_file>:使用YAML文件创建或更新资源。kubectl expose <resource_type> <resource_name> --port=<port>:将服务暴露到集群内部。kubectl scale <resource_type> <resource_name> --replicas=<count>:调整副本数。进入Pod和容器:kubectl exec -it <pod_name> --container=<container_name> -- /bin/bash:进入特定Pod的容器。kubectl logs <pod_name>:查看特定Pod的日志。调试和故障排查:kubectl describe pod <pod_name>:查看Pod的详细信息,包括事件和状态。kubectl logs <pod_name> -c <container_name>:查看特定容器的日志。kubectl get events:查看集群中的事件。kubectl rollout status <deployment_name>:查看部署的滚动更新状态。调试和故障排查:kubectl describe <resource_type> <resource_name>:查看特定资源的详细信息,如Pod、Deployment等。kubectl logs <pod_name> -c <container_name>:查看特定容器的日志。kubectl get events:查看集群中的事件。kubectl rollout status <deployment_name>:查看部署的滚动更新状态。端口转发和代理:kubectl port-forward <pod_name> <local_port>:<pod_port>:将本地端口与Pod的端口进行转发,用于访问Pod内部服务。kubectl proxy:在本地启动一个代理,使您可以通过API访问集群中的服务。配置管理:kubectl create configmap <configmap_name> --from-file=<path_to_file>:从文件创建ConfigMap。kubectl create secret generic <secret_name> --from-literal=<key>=<value>:从字面值创建Secret。kubectl edit <resource_type> <resource_name>:编辑特定资源的配置。扩展和自动化:kubectl autoscale <deployment_name> --min=<min_replicas> --max=<max_replicas> --cpu-percent=<cpu_percentage>:为Deployment创建自动扩展配置。kubectl apply -f <manifest_file> --prune:使用YAML文件进行部署,并自动删除已不存在的资源。描述和验证资源配置:kubectl explain <resource_type>:查看特定资源类型的详细说明。kubectl apply -f <manifest_file> --dry-run=client:验证YAML文件的语法和资源配置是否正确。状态查询和监控:kubectl top <resource_type>:查看特定资源的资源使用情况,如kubectl top pods查看Pod的资源使用情况。kubectl get pods --watch:持续监视Pod的状态变化。kubectl get pods -o wide:显示更详细的Pod信息,包括节点和IP地址。调度和节点管理:kubectl drain <node_name>:从节点上驱逐Pod,并将它们迁移到其他节点。kubectl cordon <node_name>:标记节点为不可调度状态,阻止新的Pod被调度到该节点。kubectl uncordon <node_name>:取消节点的不可调度状态。部署和滚动更新:kubectl apply -f <manifest_file>:使用YAML文件创建或更新资源,如果资源已存在,则更新。kubectl rollout history <resource_type> <resource_name>:查看特定资源的部署历史。kubectl rollout undo <resource_type> <resource_name>:回滚部署到先前的版本。认证和授权:kubectl config get-contexts:查看Kubernetes集群的上下文配置。kubectl config use-context <context_name>:切换到指定的上下文配置。kubectl auth can-i <verb> <resource_type>:检查当前用户是否具有执行特定操作的权限。清理和删除资源:kubectl delete <resource_type> <resource_name>:删除特定的资源。kubectl delete namespace <namespace_name>:删除命名空间及其所有的资源。kubectl delete pods --all:删除所有的Pod。安全管理:kubectl create role <role_name> --verb=<verb> --resource=<resource_type> --namespace=<namespace>:创建角色。kubectl create rolebinding <rolebinding_name> --role=<role_name> --user=<user> --namespace=<namespace>:创建角色绑定。kubectl create serviceaccount <serviceaccount_name> --namespace=<namespace>:创建服务账号。kubectl create clusterrole <clusterrole_name> --verb=<verb> --resource=<resource_type>:创建集群角色。kubectl create clusterrolebinding <clusterrolebinding_name> --clusterrole=<clusterrole_name> --user=<user>:创建集群角色绑定。日志和调试:kubectl logs <pod_name> -f:实时查看Pod的日志。kubectl port-forward <pod_name> <local_port>:<pod_port>:将本地端口与Pod的端口进行转发。kubectl attach <pod_name> -c <container_name>:将终端附加到运行中的容器。集群管理和扩展:kubectl get componentstatuses:查看集群组件的状态。kubectl get cs:查看集群组件的状态(简写)。kubectl scale deployment <deployment_name> --replicas=<replica_count>:调整部署的副本数。kubectl scale statefulset <statefulset_name> --replicas=<replica_count>:调整StatefulSet的副本数。插件和扩展:kubectl krew install:安装Krew插件管理器。kubectl krew search:搜索可用的Krew插件。kubectl plugin <plugin_name>:运行特定的Kubectl插件。版本和更新:kubectl version:查看Kubernetes客户端和服务器版本信息。kubectl get nodes --show-labels:查看节点的标签信息。运行和管理作业(Job):kubectl create job <job_name> --image=<image_name>:创建一个作业。kubectl get jobs:查看所有作业的状态。kubectl delete job <job_name>:删除一个作业。运行和管理批处理任务(CronJob):kubectl create cronjob <cronjob_name> --image=<image_name> --schedule=<cron_expression>:创建一个定时任务。kubectl get cronjobs:查看所有定时任务的状态。kubectl delete cronjob <cronjob_name>:删除一个定时任务。运行和管理DaemonSet:kubectl create daemonset <daemonset_name> --image=<image_name>:创建一个DaemonSet。kubectl get daemonsets:查看所有DaemonSet的状态。kubectl delete daemonset <daemonset_name>:删除一个DaemonSet。网络和服务发现:kubectl get services:查看所有服务的状态。kubectl expose deployment <deployment_name> --port=<port> --target-port=<target_port>:将部署暴露为服务。kubectl get ingress:查看所有Ingress的状态。状态检查和健康检查:kubectl get pods --field-selector=status.phase=<phase>:根据状态检索Pod。kubectl get pods --selector=<label_selector>:根据标签选择器检索Pod。kubectl describe pod <pod_name>:查看Pod的详细信息,包括事件和状态。故障排查和日志分析:kubectl logs <pod_name>:查看Pod的日志。kubectl describe <resource_type> <resource_name>:查看特定资源的详细信息,如Pod、Deployment等。kubectl exec -it <pod_name> -- /bin/bash:在Pod内部执行交互式Shell命令。状态和监控:kubectl top <resource_type>:查看特定资源的资源使用情况,如kubectl top pods查看Pod的资源使用情况。kubectl describe <resource_type> <resource_name>:查看特定资源的详细信息,如Pod、Deployment等。kubectl get events:查看集群中的事件。kubectl get metrics:查看集群的度量指标。存储和卷管理:kubectl get storageclasses:查看所有存储类的状态。kubectl get pv:查看所有持久卷的状态。kubectl get pvc:查看所有持久卷声明的状态。kubectl create pvc <pvc_name> --volume=<volume_name>:创建持久卷声明。调度和亲和性:kubectl describe nodes:查看节点的详细信息,包括标签和亲和性设置。kubectl taint nodes <node_name> <taint_key>=<taint_value>:<taint_effect>:为节点添加污点。kubectl label nodes <node_name> <label_key>=<label_value>:为节点添加标签。安全和权限:kubectl create role <role_name> --verb=<verb> --resource=<resource_type> --namespace=<namespace>:创建角色。kubectl create rolebinding <rolebinding_name> --role=<role_name> --user=<user> --namespace=<namespace>:创建角色绑定。kubectl create clusterrole <clusterrole_name> --verb=<verb> --resource=<resource_type>:创建集群角色。kubectl create clusterrolebinding <clusterrolebinding_name> --clusterrole=<clusterrole_name> --user=<user>:创建集群角色绑定。配置管理:kubectl create configmap <configmap_name> --from-file=<path_to_file>:从文件创建ConfigMap。kubectl create secret generic <secret_name> --from-literal=<key>=<value>:从字面值创建Secret。kubectl edit <resource_type> <resource_name>:编辑特定资源的配置。kubectl get configmaps:查看所有ConfigMap的状态。kubectl get secrets:查看所有Secret的状态。扩展和自动化:kubectl autoscale <deployment_name> --min=<min_replicas> --max=<max_replicas> --cpu-percent=<cpu_percentage>:为Deployment创建自动扩展配置。kubectl apply -f <manifest_file> --prune:使用YAML文件进行部署,并自动删除已不存在的资源。kubectl apply -f <manifest_file> --validate:使用YAML文件进行部署,并验证配置的正确性。kubectl apply -f <manifest_file> --dry-run=client:验证YAML文件的语法和资源配置是否正确。描述和验证资源配置:kubectl explain <resource_type>:查看特定资源类型的详细说明。kubectl apply -f <manifest_file> --dry-run=client:验证YAML文件的语法和资源配置是否正确。kubectl apply -f <manifest_file> --validate:使用YAML文件进行部署,并验证配置的正确性。kubectl diff -f <manifest_file>:比较YAML文件中的配置与当前集群中的配置的差异。清理和删除资源:kubectl delete <resource_type> <resource_name>:删除特定的资源。kubectl delete namespace <namespace_name>:删除命名空间及其所有的资源。kubectl delete pods --all:删除所有的Pod。kubectl delete --all <resource_type>:删除所有的指定资源类型。资源扩展和自定义:kubectl apply -f <custom_resource_definition>:创建自定义资源定义(Custom Resource Definition,CRD)。kubectl get crd:查看所有自定义资源定义的状态。kubectl get <custom_resource>:查看特定自定义资源的状态。网络策略和访问控制:kubectl create networkpolicy <networkpolicy_name> --namespace=<namespace> --from=<source_selector> --to=<destination_selector> --port=<port>:创建网络策略。kubectl get networkpolicies:查看所有网络策略的状态。执行和管理任务:kubectl create job <job_name> --image=<image_name>:创建一个作业。kubectl get jobs:查看所有作业的状态。kubectl delete job <job_name>:删除一个作业。集群信息和调试:kubectl cluster-info:查看集群信息。kubectl describe node <node_name>:查看特定节点的详细信息。kubectl describe pod <pod_name>:查看特定Pod的详细信息。kubectl describe service <service_name>:查看特定服务的详细信息。水平扩展和自动伸缩:kubectl scale deployment <deployment_name> --replicas=<replica_count>:调整部署的副本数。kubectl scale statefulset <statefulset_name> --replicas=<replica_count>:调整StatefulSet的副本数。kubectl autoscale deployment <deployment_name> --min=<min_replicas> --max=<max_replicas> --cpu-percent=<cpu_percentage>:为Deployment创建自动扩展配置。备份和恢复:kubectl get pv:查看所有持久卷的状态。kubectl get pvc:查看所有持久卷声明的状态。kubectl get snapshot:查看所有快照的状态。
2024年03月28日
190 阅读
0 评论
0 点赞
2024-03-28
kubernetes 1.28部署
构建k8s集群使用kubeadm 工具构建单节点架构图一、准备环境1.1 要求计算节点:MEM: 2GCPU: 2C控制节点:MEM: 4GCPU: 2C1.2 IP地址规划IP地址系统/内核角色版本192.168.212.75Red Hat Enterprise Linux 8.8 Linux 4.18.0-477.10.1.el8_8.x86_64masterv1.28.0192.168.212.76Red Hat Enterprise Linux 8.8 <br/>Linux 4.18.0-477.10.1.el8_8.x86_64node01v1.28.0192.168.212.77Red Hat Enterprise Linux 8.8 <br/>Linux 4.18.0-477.10.1.el8_8.x86_64node02v1.28.0192.168.212.78Red Hat Enterprise Linux 8.8 <br/>Linux 4.18.0-477.10.1.el8_8.x86_64node03v1.28.01.3 部署前的准备工作在所有节点上运行1. 配置主机名(hosts) 2. 关闭防火墙/selinux/swap cp /etc/fstab /etc/fstab_bak && grep -v "swap" /etc/fstab_bak > /etc/fstab 3. 修改网络配置 4. 修改内核 5. runtime ---> docker 6. 部署docker的第三方插件 安装容器运行时(container runtime)我们是基于docker 实现,部署k8s使用kubeadm的方式部署, 所以应该在所有节点上安装容器运行时,1. install container docker~]# dnf -y install vim yum-utils ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo ~]# yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y2.安装docker的第三方插件cri-dockerd1.源码构建1. 拉取源代码 2. 编译 3. 安装2.RPM 包安装2.1、获取软包wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.14/cri-dockerd-0.3.14-3.el8.x86_64.rpm2.2. installdnf -y install cri-dockerd-0.3.14-3.el8.x86_64.rpm 2.3. 启动cri-dockerd进程cri-dockerd & 安装 kubeadm、kubelet 和 kubectl你需要在每台机器上安装以下的软件包:kubeadm:用来初始化集群的指令。kubelet:在集群中的每个节点上用来启动 Pod 和容器等。kubectl:用来与集群通信的命令行工具。一、 安装kubernetes的源配置:源cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/ enabled=1 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key EOF列出可用版本yum list kubeadm --showduplicates | sort -r 安装yum install -y kubelet-1.28.0 kubeadm-1.28.0 kubectl-1.28.0 systemctl enable --now kubelet 二、 初始化kubenetes集群初始化[root@kube-master cri-dockerd]# kubeadm init --cri-socket unix:///var/run/cri-dockerd.sock 由于网络源,垃取不了镜像列出kubenetes所需要的组件的版本信息:[root@kube-master cri-dockerd]# kubeadm config images list I0301 09:54:25.716272 21904 version.go:256] remote version is much newer: v1.29.2; falling back to: stable-1.28 registry.k8s.io/kube-apiserver:v1.28.7 registry.k8s.io/kube-controller-manager:v1.28.7 registry.k8s.io/kube-scheduler:v1.28.7 registry.k8s.io/kube-proxy:v1.28.7 registry.k8s.io/pause:3.9 registry.k8s.io/etcd:3.5.9-0 registry.k8s.io/coredns/coredns:v1.10.1手动获取镜像:➜ ~ docker pull registry.k8s.io/kube-apiserver:v1.28.7 ➜ ~ docker pull registry.k8s.io/kube-controller-manager:v1.28.7 ➜ ~ docker pull registry.k8s.io/kube-scheduler:v1.28.7 ➜ ~ docker pull registry.k8s.io/kube-proxy:v1.28.7 ➜ ~ docker pull registry.k8s.io/pause:3.9 ➜ ~ docker pull registry.k8s.io/etcd:3.5.9-0 ➜ ~ docker pull registry.k8s.io/coredns/coredns:v1.10.1 ➜ ~ docker save -o kube_images/apiserver.tar registry.k8s.io/kube-apiserver:v1.28.7 ➜ ~ docker save -o kube_images/registry.k8s.io/kube-controller-manager:v1.28.7 ➜ ~ docker save -o kube_images/controller-manager.tar registry.k8s.io/kube-controller-manager:v1.28.7 ➜ ~ docker save -o kube_images/kube-scheduler.tar registry.k8s.io/kube-scheduler:v1.28.7 ➜ ~ docker save -o kube_images/proxy.tar registry.k8s.io/kube-proxy:v1.28.7 ➜ ~ docker save -o kube_images/pause.ta registry.k8s.io/pause:3.9 ➜ ~ docker save -o kube_images/etcd.tar registry.k8s.io/etcd:3.5.9-0 ➜ ~ docker save -o kube_images/codedns.tar registry.k8s.io/coredns/coredns:v1.10.1 ➜ ~ scp -r kube_images
[email protected]
:~
[email protected]
's password: codedns.tar 100% 51MB 74.0MB/s 00:00 proxy.tar 100% 79MB 68.5MB/s 00:01 controller-manager.tar 100% 117MB 61.1MB/s 00:01 pause.ta 100% 737KB 53.5MB/s 00:00 kube-scheduler.tar 100% 58MB 66.4MB/s 00:00 etcd.tar 100% 282MB 86.4MB/s 00:03 apiserver.tar # 加载镜像 [root@kube-master ~]# docker load -i apiserver.tar [root@kube-master ~]# docker load -i codedns.tar [root@kube-master ~]# docker load -i controller-manager.tar [root@kube-master ~]# docker load -i etcd.tar [root@kube-master ~]# docker load -i kube-scheduler.tar [root@kube-master ~]# docker load -i pause.ta [root@kube-master ~]# docker load -i proxy.tar 再次初始化:[addons] Applied essential addon: CoreDNS [addons] Applied essential addon: kube-proxy Your Kubernetes control-plane has initialized successfully! To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config Alternatively, if you are the root user, you can run: export KUBECONFIG=/etc/kubernetes/admin.conf You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/ Then you can join any number of worker nodes by running the following on each as root: kubeadm join 192.168.212.75:6443 --token ah1gmy.c9ybyxahew5tou0o \ --discovery-token-ca-cert-hash sha256:316141c909cbe8569730d61ac039eff7055e772df26f5471c2995f82006f657d 将工作节点加入到控制节点kubeadm join 192.168.212.75:6443 --token ah1gmy.c9ybyxahew5tou0o --discovery-token-ca-cert-hash sha256:316141c909cbe8569730d61ac039eff7055e772df26f5471c2995f82006f657d --cri-socket unix:///var/run/cri-dockerd.sock查看节点是否加入到控制节点中 [root@kube-master kube_images]# kubectl get nodes NAME STATUS ROLES AGE VERSION kube-master NotReady control-plane 8m28s v1.28.0 kube-node01 NotReady <none> 37s v1.28.0 kube-node02 NotReady <none> 8s v1.28.0 kube-node03 NotReady <none> 6s v1.28.0三、 安装网络插件flannelcalicoCilium以calico网络插件获取地址:wget https://docs.projectcalico.org/manifests/calico.yaml安装网络插件[root@kube-master ~]# kubectl apply -f calico.yaml 在所有的工作节点上需要安装的组件kube-proxy pause docker load -i proxy.tar docker load -i pause.ta 集群构建状态集群创建成功[root@kube-master ~]# kubectl get no NAME STATUS ROLES AGE VERSION kube-master Ready control-plane 42m v1.28.0 kube-node01 Ready <none> 34m v1.28.0 kube-node02 Ready <none> 34m v1.28.0 kube-node03 Ready <none> 34m v1.28.0{lamp/}
2024年03月28日
61 阅读
0 评论
1 点赞