Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Opsi penyimpanan persisten
Apa yang dimaksud dengan plugin volume in-tree vs. out-tree?
Sebelum pengenalan Container Storage Interface (CSI), semua plugin volume berada di dalam pohon yang berarti mereka dibangun, ditautkan, dikompilasi, dan dikirim dengan binari inti Kubernetes dan memperluas inti Kubernetes API. Ini berarti bahwa menambahkan sistem penyimpanan baru ke Kubernetes (plugin volume) memerlukan pemeriksaan kode ke dalam repositori kode Kubernetes inti.
Out-of-tree Plugin volume dikembangkan secara independen dari basis kode Kubernetes, dan digunakan (diinstal) pada cluster Kubernetes sebagai ekstensi. Ini memberi vendor kemampuan untuk memperbarui driver di luar band, yaitu terpisah dari siklus rilis Kubernetes. Hal ini sebagian besar dimungkinkan karena Kubernetes telah menciptakan antarmuka penyimpanan atau CSI yang menyediakan vendor cara standar untuk berinteraksi dengan k8s.
Anda dapat memeriksa lebih lanjut tentang kelas penyimpanan Amazon Elastic Kubernetes Services (EKS) dan Driver CSI di https://docs.aws.amazon.com/eks/latest/userguide/storage.html
In-tree Plugin Volume untuk Windows
Volume Kubernetes memungkinkan aplikasi, dengan persyaratan persistensi data, untuk digunakan di Kubernetes. Pengelolaan volume persist attaching/detaching en terdiri provisioning/resizing dari provisioning/de - volume, volume node Ku to/from bernetes, dan volume mounting/dismounting wadah to/from individu dalam pod. Kode untuk menerapkan tindakan manajemen volume ini untuk back-end atau protokol penyimpanan tertentu dikirimkan dalam bentuk plugin volume Kubernetes (In-tree Plugin Volume). Di Amazon Elastic Kubernetes Services (EKS) kelas plugin volume Kubernetes berikut didukung di Windows:
In-tree Plugin Volume: aws ElasticBlockStore
Untuk menggunakan plugin In-tree volume pada node Windows, perlu untuk membuat tambahan StorageClass untuk menggunakan NTFS sebagai FsType. Pada EKS, default StorageClass menggunakan ext4 sebagai FsType default.
A StorageClass menyediakan cara bagi administrator untuk menggambarkan “kelas” penyimpanan yang mereka tawarkan. Kelas yang berbeda mungkin dipetakan ke tingkat kualitas layanan, kebijakan cadangan, atau kebijakan sewenang-wenang yang ditentukan oleh administrator cluster. Kubernetes tidak berpendapat tentang apa yang diwakili oleh kelas. Konsep ini kadang-kadang disebut “profil” di sistem penyimpanan lain.
Anda dapat memeriksanya dengan menjalankan perintah berikut:
kubectl describe storageclass gp2
Output:
Name: gp2 IsDefaultClass: Yes Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"storage.k8s.io/v1","kind":"StorageClas ","metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class":"true"},"name":"gp2"},"parameters":{"fsType" "ext4","type":"gp2"},"provisioner":"kubernetes.io/aws-ebs","volumeBindingMode":"WaitForFirstConsumer"} ,storageclass.kubernetes.io/is-default-class=true Provisioner: kubernetes.io/aws-ebs Parameters: fsType=ext4,type=gp2 AllowVolumeExpansion: <unset> MountOptions: <none> ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: <none>
Untuk membuat yang baru StorageClass untuk mendukung NTFS, gunakan manifes berikut:
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: gp2-windows provisioner: kubernetes.io/aws-ebs parameters: type: gp2 fsType: ntfs volumeBindingMode: WaitForFirstConsumer
Buat StorageClass dengan menjalankan perintah berikut:
kubectl apply -f NTFSStorageClass.yaml
Langkah selanjutnya adalah membuat Persistent Volume Claim (PVC).
A PersistentVolume (PV) adalah bagian penyimpanan di cluster yang telah disediakan oleh administrator atau disediakan secara dinamis menggunakan PVC. Ini adalah sumber daya di cluster seperti node adalah sumber daya cluster. Objek API ini menangkap detail implementasi penyimpanan, baik itu NFS, iSCSI, atau sistem penyimpanan khusus penyedia cloud.
A PersistentVolumeClaim (PVC) adalah permintaan penyimpanan oleh pengguna. Klaim dapat meminta ukuran dan mode akses tertentu (misalnya, mereka dapat dipasang ReadWriteOnce, ReadOnlyMany atau ReadWriteMany).
Pengguna membutuhkan PersistentVolumes atribut yang berbeda, seperti kinerja, untuk kasus penggunaan yang berbeda. Administrator cluster harus dapat menawarkan berbagai PersistentVolumes yang berbeda dalam lebih banyak cara daripada hanya ukuran dan mode akses, tanpa mengekspos pengguna pada detail tentang bagaimana volume tersebut diimplementasikan. Untuk kebutuhan ini, ada StorageClass sumber daya.
Dalam contoh di bawah ini, PVC telah dibuat dalam jendela namespace.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ebs-windows-pv-claim namespace: windows spec: accessModes: - ReadWriteOnce storageClassName: gp2-windows resources: requests: storage: 1Gi
Buat PVC dengan menjalankan perintah berikut:
kubectl apply -f persistent-volume-claim.yaml
Manifes berikut membuat Pod Windows, mengatur VolumeMount as C:\Data dan menggunakan PVC sebagai penyimpanan terlampirC:\Data.
apiVersion: apps/v1 kind: Deployment metadata: name: windows-server-ltsc2019 namespace: windows spec: selector: matchLabels: app: windows-server-ltsc2019 tier: backend track: stable replicas: 1 template: metadata: labels: app: windows-server-ltsc2019 tier: backend track: stable spec: containers: - name: windows-server-ltsc2019 image: mcr.microsoft.com/windows/servercore:ltsc2019 ports: - name: http containerPort: 80 imagePullPolicy: IfNotPresent volumeMounts: - mountPath: "C:\\data" name: test-volume volumes: - name: test-volume persistentVolumeClaim: claimName: ebs-windows-pv-claim nodeSelector: kubernetes.io/os: windows node.kubernetes.io/windows-build: '10.0.17763'
Uji hasilnya dengan mengakses pod Windows melalui PowerShell:
kubectl exec -it podname powershell -n windows
Di dalam Windows Pod, jalankan: ls
Output:
PS C:\> ls Directory: C:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 3/8/2021 1:54 PM data d----- 3/8/2021 3:37 PM inetpub d-r--- 1/9/2021 7:26 AM Program Files d----- 1/9/2021 7:18 AM Program Files (x86) d-r--- 1/9/2021 7:28 AM Users d----- 3/8/2021 3:36 PM var d----- 3/8/2021 3:36 PM Windows -a---- 12/7/2019 4:20 AM 5510 License.txt
Direktori data disediakan oleh volume EBS.
Out-of-tree untuk Windows
Kode yang terkait dengan plugin CSI dikirimkan sebagai skrip dan binari di luar pohon yang biasanya didistribusikan sebagai gambar kontainer dan diterapkan menggunakan konstruksi Kubernetes standar seperti dan. DaemonSets StatefulSets Plugin CSI menangani berbagai tindakan manajemen volume di Kubernetes. Plugin CSI biasanya terdiri dari plugin node (yang berjalan pada setiap node sebagai a DaemonSet) dan plugin pengontrol.
Plugin node CSI (terutama yang terkait dengan volume persisten yang diekspos sebagai perangkat blok atau melalui sistem file bersama) perlu melakukan berbagai operasi istimewa seperti pemindaian perangkat disk, pemasangan sistem file, dll. Operasi ini berbeda untuk setiap sistem operasi host. Untuk node pekerja Linux, plugin node CSI yang dikontainer biasanya digunakan sebagai wadah istimewa. Untuk node pekerja Windows, operasi istimewa untuk plugin node CSI yang dikontainer didukung menggunakan csi-proxy
Amazon EKS Windows AMI yang Dioptimalkan termasuk CSI-proxy mulai April 2022. Pelanggan dapat menggunakan Driver SMB CSI
Blog berikut
Amazon FSx for Windows File Server
Pilihannya adalah menggunakan Amazon FSx untuk Windows File Server melalui fitur SMB yang disebut SMB Global Mapping
Dalam contoh di bawah ini, jalur G:\Directory\app-state nya adalah berbagi SMB pada Windows Node.
apiVersion: v1 kind: Pod metadata: name: test-fsx spec: containers: - name: test-fsx image: mcr.microsoft.com/windows/servercore:ltsc2019 command: - powershell.exe - -command - "Add-WindowsFeature Web-Server; Invoke-WebRequest -UseBasicParsing -Uri 'https://dotnetbinaries.blob.core.windows.net/servicemonitor/2.0.1.6/ServiceMonitor.exe' -OutFile 'C:\\ServiceMonitor.exe'; echo '<html><body><br/><br/><marquee><H1>Hello EKS!!!<H1><marquee></body><html>' > C:\\inetpub\\wwwroot\\default.html; C:\\ServiceMonitor.exe 'w3svc'; " volumeMounts: - mountPath: C:\dotnetapp\app-state name: test-mount volumes: - name: test-mount hostPath: path: G:\Directory\app-state type: Directory nodeSelector: beta.kubernetes.io/os: windows beta.kubernetes.io/arch: amd64
Blog berikut