Varsayılan olarak konteyner depolaması geçicidir; konteyner yeniden başlatıldığında içine yazılan veriler kaybolur. Disk birimi bağlamak, verilerin yeniden başlatmalar arasında kalıcı olmasını sağlar. Bu konu, CreateContainerGroup API'sini kullanarak esnek konteyner örneği oluştururken diskin birim olarak nasıl bağlanacağını açıklar.
Ön koşullar
Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:
Hedef kullanılabilirlik alanında bir esnek konteyner örneği
Örnek ile aynı kullanılabilirlik alanında kullandıkça öde bir disk (statik sağlama için)
Sınırlamalar
Yalnızca kullandıkça öde diskler bağlanabilir. Bkz. Blok depolama faturalaması.
Bir disk aynı anda yalnızca tek bir esnek konteyner örneğine bağlanabilir; diskler paylaşılamaz.
Her esnek konteyner örneği en fazla altı disk birimini destekler.
Disk, esnek konteyner örneği ile aynı kullanılabilirlik alanında olmalıdır. Alanlar arası bağlama desteklenmez. Bağlamadan önce diski hedef alanda oluşturun.
Çoklu bağlama özelliği etkinleştirilmiş NVMe diskleri (NVMe paylaşımlı diskler) bağlanamaz.
Bölümleri olan diskler bağlanamaz. Diski oluşturmak için anlık görüntü kullanırsanız ve anlık görüntü tabanlı diskte bölümler varsa, bu disk de bağlanamaz.
Nasıl çalışır
Disk birimleri, alicloud/disk sürücüsüyle FlexVolume eklentisini kullanır. CreateContainerGroup çağrısı yaptığınızda şunları yaparsınız:
Volume.N.*parametrelerini kullanarak bir birim bildirin; disk kaynağını (mevcut disk veya yeni disk) belirtin.Bildirdiğiniz birimi,
Container.N.VolumeMount.N.*parametrelerini kullanarak bir konteynere bağlayın; bağlama yolunu ve davranışını belirtin.
İki sağlama modu, diskin kaynağının alınma biçimine göre farklılık gösterir:
| Mod | Ne zaman kullanılır | Anahtar parametre |
|---|---|---|
| Statik sağlama | Zaten iliştireceğiniz bir disk var | volumeId içinde FlexVolume.Options |
| Dinamik sağlama | ECI, başlatma sırasında yeni bir disk oluşturur | volumeSize içinde FlexVolume.Options |
Birim bildirme
Disk birimi bildirmek için aşağıdaki Volume.N.* parametrelerini ayarlayın.
| Parametre | Tür | Örnek | Açıklama |
|---|---|---|---|
Volume.N.Name |
Dize | disk-demo |
Birimin adı. Bağlama sırasında Container.N.VolumeMount.N.Name tarafından referans alınır. |
Volume.N.Type |
Dize | FlexVolume |
FlexVolume eklentisini kullanmak için FlexVolume olarak ayarlayın. |
Volume.N.FlexVolume.Driver |
Dize | alicloud/disk |
Alibaba Cloud diskini bağlamak için alicloud/disk olarak ayarlayın. |
Volume.N.FlexVolume.FsType |
Dize | ext4 |
Dosya sistemi türü. Geçerli değerler: ext4, ext3, xfs, vfat. Varsayılan: ext4. |
Volume.N.FlexVolume.Options |
Dize | {"volumeId":"d-bp1****"} |
Disk yapılandırmasını içeren JSON dizesi. Kullanılabilir anahtarlar için aşağıdaki bölümlere bakın. |
Statik sağlama — mevcut disk kullanma
Mevcut bir diski iliştirmek için FlexVolume.Options içinde volumeId sağlayın. Disk Pending durumunda ve örnek ile aynı kullanılabilirlik alanında olmalıdır. volumeId belirtildiğinde diğer tüm disk niteliği parametreleri (volumeSize, performanceLevel vb.) yoksayılır. volumeId belirtmezseniz volumeSize belirtmeniz gerekir.
| Seçenek anahtarı | Açıklama |
|---|---|
volumeId |
İliştirilecek diskin kimliği. |
Dinamik sağlama — yeni disk oluşturma
ECI'nin başlatma sırasında yeni bir disk oluşturması için volumeId değerini atlayın ve volumeSize sağlayın. Sistem otomatik olarak geliştirilmiş SSD (ESSD) kullanır; disk kategorisini belirtemezsiniz.
| Seçenek anahtarı | Gerekli | Açıklama |
|---|---|---|
volumeSize |
Evet | GiB cinsinden disk boyutu. Geçerli değerler: 20–32768. Ayrıca snapshotId belirtirseniz gerçek disk boyutu, volumeSize ile anlık görüntü tabanlı diskin boyutundan büyük olanıdır. |
performanceLevel |
Hayır | ESSD'nin performans düzeyi (PL). Bkz. ESSD'ler. |
deleteWithInstance |
Hayır | Örnek serbest bırakıldığında diskin de serbest bırakılıp bırakılmayacağı. Varsayılan: true. |
encrypted |
Hayır | Diske şifreleme uygulanıp uygulanmayacağı. Varsayılan: false. Bkz. Şifrelemeye genel bakış. |
kmsKeyId |
Hayır | Disk şifrelemesi için kullanılan Key Management Service (KMS) anahtarının kimliği. |
snapshotId |
Hayır | Disk oluşturulurken kullanılacak anlık görüntünün kimliği. Bkz. Genel bakış. |
tags |
Hayır | Disk iliştirilecek etiketler. En fazla 20 etiket. Biçim: "tagkey1:tagvalue1,tagkey2:tagvalue2". |
Birimi konteynere bağlama
Bir birim bildirdikten sonra, bunu bir konteynere bağlamak için Container.N.VolumeMount.N.* parametrelerini kullanın.
| Parametre | Tür | Örnek | Açıklama |
|---|---|---|---|
Container.N.VolumeMount.N.Name |
Dize | disk-demo |
Bağlanacak birimin adı. Bir Volume.N.Name değeriyle eşleşmelidir. |
Container.N.VolumeMount.N.MountPath |
Dize | /data |
Birimin konteyner içinde bağlandığı yol. Bu yoldaki mevcut veriler birim tarafından gizlenir. |
Container.N.VolumeMount.N.SubPath |
Dize | /logs |
Bağlanacak birimin alt dizini. Aynı birimin farklı alt dizinlerini farklı konteynerlere bağlamak için bunu kullanın. |
Container.N.VolumeMount.N.ReadOnly |
Boole | false |
Bağlama yolunun salt okunur olup olmadığı. Varsayılan: false. |
Container.N.VolumeMount.N.MountPropagation |
Dize | None |
Bağlamaların konteynerler ve ana bilgisayar arasında paylaşılıp paylaşılmayacağını kontrol eder. Varsayılan: None. Aşağıdaki tabloya bakın. |
Bağlama yayılımı modları
| Değer | Konteyner ne görür | Ana bilgisayar ne görür |
|---|---|---|
None |
Yalnızca ilişkilendirme sırasında mevcut olan bağlamalar; bu birime veya alt dizinlerine yapılan sonraki bağlamalar görünmez. | Konteyner içinde oluşturulan hiçbir bağlama ana bilgisayarda görünmez. |
HostToContainer |
Ana bilgisayarda bu birime veya alt dizinlerine yapılan tüm sonraki bağlamalar konteyner içinde görünür. | Konteyner içinde oluşturulan hiçbir bağlama ana bilgisayarda görünmez. |
Bidirectional |
Ana bilgisayarda bu birime veya alt dizinlerine yapılan tüm sonraki bağlamalar konteyner içinde görünür. | Konteyner içinde oluşturulan tüm bağlamalar ana bilgisayara ve aynı birimi kullanan tüm esnek konteyner örneklerinin tüm konteynerlerine yayılır. |
Birimleri init konteynerlere bağlamak için,ContaineryerineInitContainerile aynı parametreleri kullanın.
Örnekler
Aşağıdaki örneklerde CreateContainerGroup öğesine geçirilecek anahtar parametreler gösterilmektedir.
Örnek 1: Statik sağlama (mevcut disk)
ContainerGroupName=test-disk1
SecurityGroupId=sg-bp1daxpbz9lzpvvc****
VSwitchId=vsw-bp1gds63lmlm7ib05****
# Declare the volume
Volume.1.Name=disk-demo
Volume.1.Type=FlexVolume
Volume.1.FlexVolume.Driver=alicloud/disk
Volume.1.FlexVolume.FsType=ext4
Volume.1.FlexVolume.Options={"volumeId":"d-2zebuamrpar7xnj****"}
# Mount the volume to the container
Container.1.Name=nginx
Container.1.Image=registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2
Container.1.VolumeMount.1.Name=disk-demo
Container.1.VolumeMount.1.MountPath=/data
Bu işlemi çalıştırmadan önce disk Pending durumunda ve örnek ile aynı kullanılabilirlik alanında olmalıdır.
Örnek 2: Dinamik sağlama (yeni disk)
ContainerGroupName=test-disk2
# Declare the volume
Volume.1.Name=disk-demo
Volume.1.Type=FlexVolume
Volume.1.FlexVolume.Driver=alicloud/disk
Volume.1.FlexVolume.FsType=ext4
Volume.1.FlexVolume.Options={"volumeSize":"50","tags":"test:eci"}
# Mount the volume to the container
Container.1.Name=nginx
Container.1.Image=registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2
Container.1.VolumeMount.1.Name=disk-demo
Container.1.VolumeMount.1.MountPath=/data
Örnek başlatıldığında otomatik olarak 50 GiB'lik bir ESSD oluşturulur. Disk varsayılan olarak örnek ile birlikte serbest bırakılır (deleteWithInstance: true).