kubernetes pv pvc nfs nginx 실전 지구 화 메모리 볼 륨, 지구 화 메모리 볼 륨 성명 실전
10839 단어 클 라 우 드 컴 퓨 팅
상태 적 인 응용 과 데이터 에 대한 지속 적 인 응용 이 있 습 니 다. 우 리 는 hostPath 나 empty Dir 방식 으로 우리 의 데 이 터 를 지속 적 으로 저장 해 야 합 니 다. 그러나 우 리 는 응용 프로그램의 지속 적 인 데 이 터 를 저장 해 야 합 니 다. 그러면 용 기 는 재 구축 후에 도 예전 의 데 이 터 를 사용 할 수 있 습 니 다.그러나 분명히 저장 자원 과 CPU 자원, 그리고 메모리 자원 이 많이 다르다. 바 텀 기술 의 세부 사항 을 차단 하고 사용자 가 더욱 편리 하 게 사용 할 수 있 도록 Kubernetes 는 PV 와 PVC 두 가지 중요 한 자원 대상 을 도입 하여 저장 에 대한 관 리 를 실현 했다.이것 도 우리 수업 에서 여러분 과 설명해 야 할 핵심 입 니 다. PV 와 PVC 입 니 다.
개념 PV 의 전 칭 은 PersistentVolume (지구 화 볼 륨) 이 고 저층 의 공유 저장 소 에 대한 추상 적 인 것 이다. PV 는 관리자 가 만 들 고 설정 하 는데 구체 적 인 저층 의 공유 저장 기술 의 실현 방식 과 관련된다. 예 를 들 어 Ceph, GlusterFS, NFS 등 은 모두 플러그 인 체 제 를 통 해 공유 저장 소 와 의 연결 을 완성 한다.
PVC 의 전 칭 은 PersistentVolumeClaim (지구 화 볼 륨 성명) 이 고 PVC 는 사용자 가 저장 하 는 성명 이다. PVC 와 Pod 는 비교적 유사 하 다. Pod 는 노드 를 소모 하고 PVC 는 PV 자원 을 소모 하 며 Pod 는 CPU 와 메모 리 를 요청 할 수 있 으 며 PVC 는 특정한 저장 공간 과 접근 모드 를 요청 할 수 있다.진정 으로 저장 소 를 사용 하 는 사용 자 는 밑바닥 의 저장 소 구현 디 테 일 에 관심 을 갖 지 않 고 PVC 만 직접 사용 하면 된다.
그러나 PVC 를 통 해 일정한 저장 공간 에 요청 하 는 것 도 저장 장치 에 대한 다양한 수 요 를 만족 시 키 기 에 부족 할 수 있 습 니 다. 또한 서로 다른 응용 프로그램 이 저장 성능 에 대한 요구 도 다 를 수 있 습 니 다. 예 를 들 어 읽 기와 쓰기 속도, 병행 성능 등 이 있 습 니 다. 이 문 제 를 해결 하기 위해 Kubernetes 는 새로운 자원 대상 인 StorageClass 를 도 입 했 습 니 다.StorageClass 의 정 의 를 통 해 관리 자 는 저장 자원 을 특정한 유형의 자원 으로 정의 할 수 있다. 예 를 들 어 빠 른 저장, 느 린 저장 등 이다. 사용 자 는 StorageClass 의 설명 에 따라 각종 저장 자원 의 구체 적 인 특성 을 직관 적 으로 알 수 있다. 그러면 응용 특성 에 따라 적당 한 저장 자원 을 신청 할 수 있다.
NFS 설치
저 희 는 편리 함 을 보 여주 기 위해 상대 적 으로 간단 한 NFS 라 는 저장 자원 을 사용 하기 로 결 정 했 습 니 다. 그 다음 에 저 희 는 노드 10.129.247.241 에 NFS 서 비 스 를 설치 하고 데이터 디 렉 터 리: / data / k8s /
방화벽 을 닫다
systemctl stop firewalld.service
systemctl disable firewalld.service
설치 설정 nfs
yum -y install nfs-utils rpcbind
공유 디 렉 터 리 설정 권한:
chmod 755 /data/k8s/
nfs, nfs 의 기본 설정 파일 을 설정 합 니 다. / etc / exports 파일 에 다음 설정 정 보 를 추가 합 니 다.
vi /etc/exports
/data/k8s *(rw,sync,no_root_squash)
설정 설명:
/ data / k8s: 공 유 된 데이터 디 렉 터 리 입 니 다 *: 누구나 연결 할 수 있 는 권한 이 있 음 을 의미 합 니 다. 물론 하나의 네트워크, 하나의 IP 일 수도 있 고 도 메 인 이름 rw 일 수도 있 습 니 다. 읽 기와 쓰기 권한 sync: 파일 을 하 드 디스크 와 메모리 no 에 동시에 기록 하 는 것 을 의미 합 니 다.root_squash: NFS 호스트 에 로그 인하 여 공유 디 렉 터 리 를 사용 하 는 사용자 가 root 일 때 그 권한 은 익명 사용자 로 전 환 됩 니 다. 보통 UID 와 GID 는 nobody 신분 이 됩 니 다. 물론 nfs 의 설정 이 많 습 니 다. 관심 있 는 학생 들 은 인터넷 에서 찾 아 볼 수 있 습 니 다.
서비스 nfs 를 시작 하려 면 rpc 에 등록 해 야 합 니 다. rpc 가 다시 시작 되면 등 록 된 파일 을 잃 어 버 립 니 다. 그 에 게 등 록 된 서 비 스 는 시작 순 서 를 다시 시작 해 야 합 니 다. rpcbid 를 먼저 시작 하 십시오.
$ systemctl start rpcbind.service
$ systemctl enable rpcbind
$ systemctl status rpcbind
그리고 nfs 서 비 스 를 시작 합 니 다:
$ systemctl start nfs.service
$ systemctl enable nfs
$ systemctl status nfs
[root@k8smaster k8s]# systemctl status nfs
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
Drop-In: /run/systemd/generator/nfs-server.service.d
└─order-with-mounts.conf
Active: active (exited) since 2020-01-10 09:53:13 CST; 1 weeks 2 days ago
Main PID: 4090 (code=exited, status=0/SUCCESS)
Tasks: 0
Memory: 0B
CGroup: /system.slice/nfs-server.service
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
Started 는 NFS 서버 가 성공 적 으로 시작 되 었 음 을 증명 합 니 다.
또한 우 리 는 아래 의 명령 을 통 해 확인 할 수 있다.
[root@k8smaster k8s]# rpcinfo -p|grep nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 3 udp 2049 nfs_acl
구체 적 인 디 렉 터 리 마 운 트 권한 보기:
$ cat /var/lib/nfs/etab
[root@k8smaster k8s]# cat /var/lib/nfs/etab
/data/k8s *(rw,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,no_root_squash,no_all_squash)
여기까지 nfs server 를 설치 하 는 데 성 공 했 습 니 다. 그 다음 에 노드 10.129.247.242 에 nfs 클 라 이언 트 를 설치 하여 nfs 를 검증 하 겠 습 니 다.
nfs 를 설치 하려 면 현재 방화벽 을 닫 아야 합 니 다.
$ systemctl stop firewalld.service
$ systemctl disable firewalld.service
그리고 nfs 설치
$ yum -y install nfs-utils rpcbind
설치 가 완료 되면 위의 방법 과 마찬가지 로 rpc 를 시작 한 다음 nfs 를 시작 합 니 다.
$ systemctl start rpcbind.service
$ systemctl enable rpcbind.service
$ systemctl start nfs.service
$ systemctl enable nfs.service
마 운 트 데이터 디 렉 터 리 클 라 이언 트 가 시작 되면 클 라 이언 트 에서 nfs 테스트 를 마 운 트 합 니 다. 먼저 nfs 에 공유 디 렉 터 리 가 있 는 지 확인 하 십시오.
[root@k8smaster k8s]# showmount -e 10.129.247.241
Export list for 10.129.247.241:
/data/k8s *
그리고 클 라 이언 트 에 새 디 렉 터 리 를 만 듭 니 다.
$ mkdir -p /root/course/kubeadm/data
nfs 공유 디 렉 터 리 를 위 디 렉 터 리 에 마 운 트 하기:
$ mount -t nfs 10.129.247.240:/data/k8s /root/course/kubeadm/data
마 운 트 에 성공 한 후 클 라 이언 트 위의 디 렉 터 리 에 파일 을 새로 만 든 다음 nfs 서버 의 공유 디 렉 터 리 아래 에 도 이 파일 이 나타 날 지 관찰 합 니 다.
$ touch /root/course/kubeadm/data/test.txt
그리고 nfs 서버 에서 보기:
$ ls -ls /data/k8s/
total 4
위 에 test. txt 파일 이 나타 나 면 nfs 마 운 트 에 성 공 했 음 을 증명 합 니 다.
//
systemctl disable firewalld.service
systemctl stop firewalld.service
yum -y install nfs-utils rpcbind
mkdir -p /data/k8s
chmod 755 /data/k8s/
vi /etc/exports
systemctl start rpcbind.service
systemctl enable rpcbind
systemctl status rpcbind
systemctl start nfs.service
systemctl enable nfs
systemctl status nfs
systemctl disable firewalld.service
systemctl stop firewalld.service
yum -y install nfs-utils rpcbind
systemctl start rpcbind.service
systemctl enable rpcbind.service
systemctl start nfs.service
systemctl enable nfs.service
showmount -e 10.129.247.241
mkdir -p /root/course/kubeadm/data
mount -t nfs 10.129.247.241:/data/k8s /root/course/kubeadm/data
touch /root/course/kubeadm/data/test.txt
PV
위의 NFS 공유 저장 소 가 있 으 면 PV 와 PVC 를 사용 할 수 있 습 니 다.PV 는 저장 자원 으로서 주로 저장 능력, 액세스 모드, 저장 유형, 회수 정책 등 관건 적 인 정 보 를 포함 합 니 다. 다음은 PV 대상 을 새로 만 들 고 nfs 형식의 백 엔 드 저장 소, 1G 의 저장 공간 을 사용 합 니 다. 액세스 모드 는 ReadWrite Once 이 고 회수 전략 은 Recyle 입 니 다. 대응 하 는 YAML 파일 은 다음 과 같 습 니 다. (pv1 - demo. yaml)
pv
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv1
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
nfs:
path: /data/k8s
server: 10.129.247.241
PVC
pvc
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc-nfs
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
쓰다
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nfs-pvc
spec:
replicas: 3
template:
metadata:
labels:
app: nfs-pvc
spec:
containers:
- name: nginx
image: nginx:1.7.9
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
name: web
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
volumes:
- name: www
persistentVolumeClaim:
claimName: pvc-nfs-2
---
apiVersion: v1
kind: Service
metadata:
name: nfs-pvc
labels:
app: nfs-pvc
spec:
type: NodePort
ports:
- port: 80
targetPort: web
selector:
app: nfs-pvc
[root@k8smaster k8s]# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
k8smaster Ready master 46h v1.15.4 10.129.247.241 CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://18.9.7
k8snode1 Ready 46h v1.15.4 10.129.247.242 CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://18.9.7
k8snode2 Ready 46h v1.15.4 10.129.247.243 CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://18.9.7
[root@k8smaster k8s]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 443/TCP 46h
nfs-pvc NodePort 10.108.174.179 80:13507/TCP 4m26s
/ data / k8s / 디 렉 터 리 에 index. html 새로 만 들 기
집단 외 / 내부 방문
http://10.129.247.241:13507/ http://10.129.247.242:13507/ http://10.129.247.243:13507/
CLUSTER - IP 접근
[root@k8smaster k8s]# curl http://10.108.174.179/ hello pvc
Kubernetes 가 지원 하 는 PV 유형 은 매우 많 습 니 다. 예 를 들 어 흔히 볼 수 있 는 Ceph, GlusterFs, NFS, 심지어 HostPath 도 가능 합 니 다. 그러나 HostPath 는 전에 도 말 했 듯 이 단기 테스트 에 만 사용 할 수 있 고 더 많은 지원 유형 은 Kubernetes PV 공식 문서 로 가서 볼 수 있 습 니 다. 모든 저장 유형 은 각자 의 특징 이 있 기 때 문 입 니 다.그래서 우 리 는 사용 할 때 해당 하 는 문 서 를 보고 해당 하 는 인 자 를 설정 할 수 있 습 니 다.
그리고 똑 같이 kubectl 로 직접 만 들 면 됩 니 다.
$ kubectl create -f pv1-demo.yaml
persistentvolume "pv1" created
$ kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pv1 1Gi RWO Recycle Available 12s
pv1 이 이미 생 성 되 었 음 을 볼 수 있 습 니 다. 상 태 는 Available 입 니 다. pv1 이 준비 되 었 음 을 나타 내 고 PVC 에 신청 할 수 있 습 니 다.우 리 는 위의 속성 을 각각 해석 합 시다.
Capacity (저장 능력) 일반적으로 PV 대상 은 하나의 저장 능력 을 지정 하고 PV 의 capacity 속성 을 통 해 설정 해 야 합 니 다. 현 재 는 저장 공간의 설정 만 지원 합 니 다. 바로 우리 가 있 는 storage = 1Gi 입 니 다. 그러나 미래 에는 IOPS, 스루풋 등 지표 설정 이 추 가 될 수 있 습 니 다.
AccessModes (액세스 모드) AccessModes 는 PV 에 대한 액세스 모드 설정 으로 사용자 가 저장 자원 에 대한 접근 권한 을 설명 하 는 데 사 용 됩 니 다. 접근 권한 은 다음 과 같은 몇 가지 방식 을 포함 합 니 다.
ReadWrite Once (RWO): 읽 기와 쓰기 권한 이지 만 한 노드 에 만 마 운 트 됩 니 다. ReadOnly Many (ROX): 읽 기 권한 만 있 고 여러 노드 에 마 운 트 될 수 있 습 니 다. ReadWrite Many (RWX): 읽 기와 쓰기 권한 은 여러 노드 에 마 운 트 될 수 있 습 니 다. 주의: 일부 PV 는 여러 접근 모드 를 지원 할 수 있 지만 마 운 트 할 때 한 가지 접근 모드 만 사용 할 수 있 습 니 다.다양한 접근 모드 는 적용 되 지 않 습 니 다.
다음 그림 은 Volume 플러그 인 이 지원 하 는 접근 모드 입 니 다: volume - access modes
persistentVolume Reclai정책 (회수 정책) 제 가 지정 한 PV 회수 정책 은 Recycle 입 니 다. 현재 PV 가 지원 하 는 정책 은 세 가지 가 있 습 니 다.
Retain (보류) - 데 이 터 를 보존 하려 면 관리자 가 수 동 으로 데 이 터 를 정리 해 야 합 니 다. Recycle (회수) - PV 의 데 이 터 를 제거 해 야 합 니 다. rm - rf / thevolume / * Delete (삭제) - PV 와 연 결 된 백 엔 드 저장 소 에서 volume 의 삭제 작업 을 완성 하 는 것 과 같 습 니 다. 물론 이것 은 클 라 우 드 서비스 업 체 의 저장 서비스, 예 를 들 어 ASW EBS 와 같은 경우 가 많 습 니 다.그러나 주의해 야 할 것 은 현재 NFS 와 HostPath 두 가지 유형 만 회수 정책 을 지원 하고 있다 는 점 이다.물론 일반적으로 Retain 이라는 전략 보험 으로 설정 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Nginx 의 설치, 업그레이드 및 간단 한 사용Nginx 설치 – prefix = / usr / local / nginx 지정 설치 경로 – user = nginx 지정 사용자 – group = nginx 지정 기본 그룹 – with - httpssl_modul...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.