Ana içeriğe geç

Incus

Bu makalede

Bilgi

Incus, açık kaynaklı bir sistem konteyner ve sanal makine yöneticisidir. LXD'nin bir fork'udur ve Linux konteynerlerini ve sanal makinelerini birleşik bir platform üzerinde yönetmek için basit ancak güçlü bir araç sağlar.

Incus. Temel Özellikler

  • Konteyner ve VM Yönetimi: Incus, tek bir arayüz üzerinden Linux sistem konteynerlerinin ve tam kapsamlı QEMU/KVM sanal makinelerinin çalıştırılmasına olanak tanır.
  • Süreç İzolasyonu: Konteynerler; kendi dosya sistemlerine, ağ arayüzlerine ve süreçlerine sahip izole bir ortamda çalışır.
  • Ağ Yetenekleri: Çeşitli ağ türleri için yerleşik destek - köprüler (bridges), NAT, VLAN'lar, konteynerler için overlay ağları.
  • Depolama Yönetimi: Farklı backend'leri destekleyen esnek depolama havuzu sistemi - dir, btrfs, ZFS, LVM.
  • Snapshot'lar ve Migrasyon: Konteyner durumu snapshot'larının oluşturulması, servisler durdurulmadan hostlar arasında canlı migrasyon.
  • Yapılandırma Profilleri: Önceden tanımlanmış parametrelerle konteynerlerin hızlı kurulumu için yeniden kullanılabilir profiller.
  • Kaynak Sınırlama: Her bir konteyner için CPU, bellek, disk I/O ve ağ bant genişliği üzerinde hassas kontrol.
  • REST API: Otomasyon ve harici sistemlerle entegrasyon için tam özellikli HTTP API.
  • Web Arayüzü: Görsel altyapı kontrolü için yerleşik web yönetim paneli.
  • İmaj Kütüphanesi: Çeşitli Linux dağıtımlarının geniş bir hazır imaj koleksiyonuna erişim.
  • Kümeleme (Clustering): Dağıtık yönetim için birden fazla hostu tek bir kümede birleştirme yeteneği.

Çalıştırma Özellikleri

ID Yazılım Adı Uyumlu OS VM BM VGPU GPU Min CPU (Çekirdekler) Min RAM (GB) Min HDD/SSD (GB) Özel Alan Adı Aktif
234 Linux Containers Incus Debian 13 + + + + 2 2 50 Hayır SİPARİŞ VER

Not

Aksi belirtilmedikçe, varsayılan olarak yazılımın en son sürümünü geliştiricinin sitesinden veya işletim sistemi depolarından kurarız.

Incus Kurulumundan Sonra Başlangıç

Ödeme yapıldıktan sonra, kayıt sırasında belirtilen adrese sunucunun çalışmaya hazır olduğunu belirten bir e-posta bildirimi gönderilecektir. Bu e-posta VPS IP adresini ve erişim için kimlik bilgilerini içerecektir. Şirketimizin müşterileri ekipmanları Server Management Panel and APIInvapi üzerinden yönetirler.

Kimlik doğrulama verileri, sunucu yönetim panelindeki Configuration >> Tags sekmesinde veya gönderilen e-postada bulunabilir:

  • Incus Web Interface'e Erişim Bağlantısı: tag webpanel içinde (port 8443, HTTPS)

Dikkat

Web arayüzüne erişmek için HTTPS kullanmalı ve tarayıcınızda kendi kendine imzalanmış sertifikayı kabul etmelisiniz.

Incus web arayüzüne ilk kez erişildiğinde, tarayıcı kendi kendine imzalanmış sertifika nedeniyle güvensiz bir bağlantı hakkında uyarı verecektir. Devam etmek için sertifikoyu kabul etmeniz gerekir:

Sertifikayı kabul ettikten sonra giriş sayfası açılacaktır. Kimlik doğrulama işlemini başlatmak için Login with TLS düğmesine tıklayın:

Sistem sizi mevcut bir sertifika ekleme sayfasına yönlendirecektir:

Trust token sekmesini seçin ve talimatları izleyin:

  1. Sunucu terminalinde, bir token oluşturmak için komutu çalıştırın:

    incus config trust add myclient
    

  2. Sistem kopyalanması gereken bir token oluşturacaktır:

  3. Elde edilen token'ı kimlik doğrulama sayfasındaki ilgili metin alanına yapıştırın ve Import düğmesine tıklayın.

Başarılı kimlik doğrulamanın ardından, örneklerin listelendiği ana web arayüzü sayfası açılacaktır.

Web Arayüzü Aracılığıyla Yeni Bir Konteyner Oluşturma

Yeni bir konteyner oluşturmak için arayüzün sağ üst köşesindeki Create instance düğmesine tıklayın:

Birkaç yapılandırma bölümüne sahip bir örnek oluşturma formu açılacaktır. Bir temel imaj seçmek için Browse images düğmesine tıklayın. Dağıtım, sürüm, varyant, mimari ve türe göre filtreleme seçeneklerinin olduğu bir imaj seçim penceresi açılacaktır:

Aşağıdaki yapılandırma bölümleri mevcuttur:

  • Main configuration — temel konteyner parametreleri: ad, açıklama, örnek türü (container veya sanal makine), temel imaj ve atanan profiller;
  • Devices — konteyner cihaz yönetimi:
  • Disk — disk cihazı ve bağlama noktası yapılandırması;
  • Network — ağ arayüzü yapılandırması;
  • GPU — grafik hızlandırıcıların bağlanması;
  • Proxy — host ve konteyner arasında port yönlendirme yapılandırması;
  • Other — ek cihaz türleri;
  • Resource limits — kaynak sınırlama: işlemci (CPU), RAM, disk I/O işlemleri;
  • Security policies — güvenlik politikaları: izolasyon yapılandırması, ayrıcalıklar ve güvenlik profilleri (AppArmor, SELinux);
  • Snapshots — yedekleme ve kurtarma için konteyner durumu snapshot yönetimi;
  • Migration — hostlar arasında konteyner migrasyon parametreleri;
  • Boot — önyükleme ayarları: önyükleme cihaz sırası, sistem başlangıcında otomatik başlatma;
  • Cloud init — cloud-init aracılığıyla otomatik konteyner başlatma yapılandırması (kullanıcılar, ağ, paketler, betikler).

Yanındaki Select düğmesine tıklayarak istediğiniz imajı seçin:

Bir imaj seçtikten sonra temel parametreleri doldurun:

  • Instance name — konteyner adı;
  • Description — açıklama (isteğe bağlı);
  • Instance type — örnek türü (Container veya Virtual Machine);
  • Profiles — yapılandırma profilleri.

Oluşturmanın hemen ardından konteyneri başlatmak için Create and start düğmesine tıklayın. Başlatmadan oluşturmak için Create düğmesini kullanın.

Konteyner Durumu İzleme

Konteyner kurulumu sırasında imaj indirme ilerlemesi gösterilir. "Setting up" durumu ve indirme ilerleme göstergesi, mevcut örnek oluşturma ilerlemesini gösterir. Kurulum tamamlandıktan sonra durum, yeşil bir gösterge ile "Running" olarak değişecektir:

Servis Yönetimi

Durumu kontrol etme:

systemctl status incus

Servisi yeniden başlatma:

systemctl restart incus

Servisi durdurma:

systemctl stop incus

Servisi başlatma:

systemctl start incus

Logları görüntüleme:

journalctl -u incus -f
tail -f /var/log/incus/incusd.log

İlk Altyapı Kurulumu

Sunucu kurulumundan sonra, ilk Incus altyapı kurulumunun yapılması önerilir.

Bir Depolama Havuzu Oluşturma

Bir depolama havuzu, konteyner verilerinin nerede saklanacağını tanımlar:

incus storage create default dir source=/var/lib/incus/storage-pools/default

Oluşturulan depolama havuzlarını kontrol etme:

incus storage list

Bir havuz hakkında ayrıntılı bilgi görüntüleme:

incus storage show default

Ağ Yapılandırması

Konteynerler için otomatik IPv4 adreslemeli bir NAT köprüsü oluşturma:

incus network create incusbr0 ipv4.address=auto ipv6.address=none

Ağ ayarlarını kontrol etme:

incus network list

Ağ yapılandırmasını görüntüleme:

incus network show incusbr0

Varsayılan Profili Yapılandırma

default profili, yeni konteynerler için temel yapılandırmayı tanımlar. Profile bir kök disk ekleme:

incus profile device add default root disk path=/ pool=default

Profile bir ağ arayüzü ekleme:

incus profile device add default eth0 nic network=incusbr0

Profil yapılandırmasını kontrol etme:

incus profile show default

Konteyner Oluşturma ve Yönetme

Bir Konteyner Oluşturma

Kaynak sınırları olan bir Debian 12 konteyneri oluşturma örneği:

incus launch images:debian/12 deb12 --profile default \
  -c limits.cpu=2 -c limits.memory=2GiB

Komut parametreleri:

  • images:debian/12 - genel depodan imaj
  • deb12 - konteyner adı
  • --profile default - varsayılan profili kullanma
  • -c limits.cpu=2 - 2 CPU çekirdeği ile sınırlama
  • -c limits.memory=2GiB - 2 GB bellek sınırı

Konteynerleri Görüntüleme

Tüm örneklerin listesi:

incus list

Çıktı, her bir konteynerin durumu, IP adresleri ve türü hakkında bilgi içerecektir.

Konteyner Durumunu Yönetme

Bir konteyneri başlatma:

incus start <name>

Bir konteyneri durdurma:

incus stop <name>

Bir konteyneri yeniden başlatma:

incus restart <name>

Bir konteyneri silme (durdurulması gerekir):

incus delete <name>

Çalışan bir konteyneri zorla silme:

incus delete <name> --force

Konteyner Erişimi

Bash üzerinden bağlanma:

incus exec deb12 -- bash

TTY konsoluna bağlanma:

incus console deb12

Konsoldan çıkmak için Ctrl+a q tuş kombinasyonunu kullanın.

Port Yönlendirme

Bir konteyner içindeki servislere harici bir ağdan erişmek için, bir proxy cihazı aracılığıyla port yönlendirmesi kullanılır:

incus config device add deb12 web proxy \
  listen=tcp:0.0.0.0:8080 connect=tcp:127.0.0.1:80

Bu komut, host portu 8080'i konteyner portu 80'e yönlendirir.

Birden fazla port için örnekler:

HTTP:

incus config device add mycontainer http proxy \
  listen=tcp:0.0.0.0:80 connect=tcp:127.0.0.1:80

HTTPS:

incus config device add mycontainer https proxy \
  listen=tcp:0.0.0.0:443 connect=tcp:127.0.0.1:443

SSH:

incus config device add mycontainer ssh proxy \
  listen=tcp:0.0.0.0:2222 connect=tcp:127.0.0.1:22

Konteyner Yapılandırmasını Yönetme

Yapılandırmayı Görüntüleme

Tam genişletilmiş konteyner yapılandırmasını görüntüleme:

incus config show <name> --expanded

Profiller olmadan temel yapılandırmayı görüntüleme:

incus config show <name>

Parametreleri Değiştirme

Yapılandırma parametrelerini ayarlama:

CPU sınırlaması:

incus config set <name> limits.cpu=4

Bellek sınırlaması:

incus config set <name> limits.memory=4GiB

Disk I/O sınırlaması:

incus config set <name> limits.disk.priority=5

Konteyner otomatik başlatma:

incus config set <name> boot.autostart=true

Cihaz Ekleme

Cihaz eklemek için genel sözdizimi:

incus config device add <name> <device-name> <type> key=value

Örnekler:

Ek bir disk ekleme:

incus config device add mycontainer data disk \
  source=/data/mycontainer pool=default

Ek bir ağ arayüzü ekleme:

incus config device add mycontainer eth1 nic \
  network=incusbr1 name=eth1

Bir host dizinini konteynere bağlama (mount):

incus config device add mycontainer shared disk \
  source=/host/path path=/container/path

Cihaz kaldırma:

incus config device remove <name> <device-name>

Snapshot'lar ve Migrasyon ile Çalışma

Snapshot Oluşturma

Snapshot'lar, sonraki kurtarmalar için konteyner durumunu kaydetmeye olanak tanır:

incus snapshot <name> <snapshot-name>

Örnek:

incus snapshot deb12 before-update

Konteyner snapshot listesi:

incus info <name>

Bir Snapshot'tan Geri Yükleme

incus restore <name> <snapshot-name>

Örnek:

incus restore deb12 before-update

Bir snapshot silme:

incus delete <name>/<snapshot-name>

Yeniden Adlandırma ve Kopyalama

Konteyneri yeniden adlandırma:

incus move <name> <newname>

Aynı host üzerinde bir konteyneri kopyalama:

incus copy <name> <newname>

Bir konteyneri başka bir Incus hostuna kopyalama:

incus copy <name> <remote>:<newname>

Uzak hostlarla çalışmak için önce bir uzak (remote) eklemelisiniz:

incus remote add myremote https://remote-ip:8443

İmajları Yönetme

İmajları Görüntüleme

Yerel imajların listesi:

incus image list

Uzak depodaki imajların listesi:

incus image list images:

Belirli bir dağıtım için arama yapma:

incus image list images: debian
incus image list images: ubuntu

İmaj Kopyalama

Otomatik güncelleme ile genel depodan imaj kopyalama:

incus image copy images:debian/12 local: --auto-update

Takma ad (alias) ile imaj kopyalama:

incus image copy images:debian/12 local: --alias debian12

Bir Konteynerdan İmaj Oluşturma

incus publish <container-name> --alias my-custom-image

İmaj Silme

incus image delete <image-fingerprint>

veya takma ad ile:

incus image delete <alias>

Ağ Etkileşimi

Ağ Yönetimi

Ağ listesi:

incus network list

Ağ yapılandırmasını görüntüleme:

incus network show <network-name>

Yeni bir ağ oluşturma:

# Köprü (bridge) ağı oluşturma
incus network create mybr0 \
  ipv4.address=10.10.10.1/24 \
  ipv4.nat=true \
  ipv6.address=none

# macvlan ağı oluşturma
incus network create mymacvlan \
  type=macvlan \
  parent=eth0

Bir ağı düzenleme:

incus network edit <network-name>

Bir ağı silme:

incus network delete <network-name>

Ağ Yönlendirme Kuralları

Port yönlendirme için bir yönlendirme kuralı oluşturma:

incus network forward create incusbr0 <external-ip>
incus network forward port add incusbr0 <external-ip> tcp 80 <container-ip> 80

Depolama Yönetimi

Depolama Havuzlarını Yönetme

Havuz listesi:

incus storage list

Havuz bilgilerini görüntüleme:

incus storage show <pool-name>

Depolama havuzu oluşturma:

Dir tabanlı havuz:

incus storage create mypool dir source=/var/lib/incus/pools/mypool

Btrfs havuzu:

incus storage create mybtrfs btrfs source=/dev/sdb

ZFS havuzu:

incus storage create myzfs zfs source=/dev/sdc

Bir havuzu düzenleme:

incus storage edit <pool-name>

Bir havuzu silme:

incus storage delete <pool-name>

Birimleri (Volumes) Yönetme

Özel bir birim oluşturma:

incus storage volume create <pool-name> <volume-name>

Bir havuzdaki birimlerin listesi:

incus storage volume list <pool-name>

Bir birimi konteynere bağlama:

incus config device add <container> <device-name> disk \
  pool=<pool-name> \
  source=<volume-name> \
  path=/mount/path

Bir birimi kopyalama:

incus storage volume copy <pool>/<volume> <pool>/<new-volume>

Bir birimi silme:

incus storage volume delete <pool-name> <volume-name>

NAT ve Yönlendirme Yapılandırma

Bazı durumlarda, konteyner ağ erişimini harici ağa sağlamak için manuel NAT ve yönlendirme kural yapılandırması gerekebilir.

nftables'a Geçiş

update-alternatives --set iptables /usr/sbin/iptables-nft
update-alternatives --set ip6tables /usr/sbin/ip6tables-nft
update-alternatives --set arptables /usr/sbin/arptables-nft
update-alternatives --set ebtables /usr/sbin/ebtables-nft

IP Yönlendirmeyi Etkinleştirme

sysctl -w net.ipv4.ip_forward=1

Kalıcı uygulama için /etc/sysctl.conf dosyasına ekleyin:

net.ipv4.ip_forward=1

Değişikliklerden sonra Incus'u yeniden başlatma:

systemctl restart incus

NAT Tablosunu Yapılandırma

NAT tablosu ve POSTROUTING zinciri oluşturma:

nft add table ip nat
nft add chain ip nat POSTROUTING '{ type nat hook postrouting priority srcnat; }'

Konteyner alt ağı için masquerade kuralı ekleme:

nft add rule ip nat POSTROUTING oifname "ens1" ip saddr 10.1.4.0/24 counter masquerade

Not

ens1 yerine harici ağ arayüzü adınızı ve 10.1.4.0/24 yerine Incus köprü alt ağınızı yazın.

FORWARD Zincirini Yapılandırma

Filtre tablosu ve FORWARD zinciri oluşturma:

nft add table ip filter
nft add chain ip filter FORWARD '{ type filter hook forward priority 0; policy accept; }'

Trafiğe izin vermek için kurallar ekleme:

Konteynerlardan dışarıya trafiğe izin verme:

nft insert rule ip filter FORWARD iifname "incusbr0" oifname "ens1" accept

Oluşturulmuş/ilişkili (established/related) trafiğin geri dönüşüne izin verme:

nft insert rule ip filter FORWARD iifname "ens1" oifname "incusbr0" ct state established,related accept

nftables Kurallarını Kontrol Etme

Tüm kuralları görüntüleme:

nft list ruleset

Kuralları kaydetme (Debian/Ubuntu için):

Kuralları kaydetmek için paketi yükleme:

apt-get install nftables

Mevcut kuralları kaydetme:

nft list ruleset > /etc/nftables.conf

Otomatik yüklemayı etkinleştirme:

systemctl enable nftables

Not

Tüm Incus yetenekleri hakkında ayrıntılı bilgi resmi geliştirici dokümanında yer almaktadır.

API kullanarak Incus ile Sunucu Siparişi Verme

Bu yazılımı API kullanarak kurmak için bu talimatları izleyin.