IoT Edge modülleri için kapsayıcı oluşturma seçeneklerini yapılandırma
Şunlar için geçerlidir: IoT Edge 1.5 IoT Edge 1.4
Önemli
IoT Edge 1.5 LTS ve IoT Edge 1.4 LTS desteklenen sürümlerdir. IoT Edge 1.4 LTS, 12 Kasım 2024'te kullanım ömrü sona erer. Önceki bir sürümdeyseniz bkz. IoT Edge’i güncelleştirme.
Dağıtım bildirimindeki createOptions parametresi, modül kapsayıcılarını çalışma zamanında yapılandırmanızı sağlar. Bu parametre modüller üzerindeki denetiminizi genişletir ve modülün konak cihazın kaynaklarına erişimine izin verme veya kısıtlama ya da ağ yapılandırma gibi görevlere izin verir.
IoT Edge modülleri, IoT Edge cihazınızda Docker uyumlu kapsayıcılar olarak uygulanır. Docker kapsayıcı oluşturmak için birçok seçenek sunar ve bu seçenekler IoT Edge modülleri için de geçerlidir. Daha fazla bilgi için bkz . Docker kapsayıcı oluşturma seçenekleri.
Biçim oluşturma seçenekleri
IoT Edge dağıtım bildirimi, JSON olarak biçimlendirilmiş oluşturma seçeneklerini kabul eder. Örneğin, her edgeHub modülü için otomatik olarak eklenen oluşturma seçeneklerini inceleyin:
"createOptions": {
"HostConfig": {
"PortBindings": {
"5671/tcp": [
{
"HostPort": "5671"
}
],
"8883/tcp": [
{
"HostPort": "8883"
}
],
"443/tcp": [
{
"HostPort": "443"
}
]
}
}
}
Bu edgeHub örneği, kapsayıcıdaki kullanıma sunulan bağlantı noktalarını konak cihazındaki bir bağlantı noktasına eşlemek için HostConfig.PortBindings parametresini kullanır.
Visual Studio veya Visual Studio Code için Azure IoT Edge uzantısını kullanıyorsanız oluşturma seçeneklerini deployment.template.json dosyasına JSON biçiminde yazabilirsiniz. Ardından uzantıyı kullanarak IoT Edge çözümünü derlediğinizde veya dağıtım bildirimini oluşturduğunuzda, JSON sizin için IoT Edge çalışma zamanının beklediği biçimde dizelenir. Örneğin:
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
Önemli
Azure IoT Edge Visual Studio Code uzantısı bakım modundadır. iotedgedev aracı, IoT Edge modülleri geliştirmek için önerilen araçtır.
Oluşturma seçeneklerini yazmak için bir ipucu, komutunu kullanmaktır docker inspect
. Geliştirme sürecinizin bir parçası olarak kullanarak modülü yerel olarak docker run <container name>
çalıştırın. Modülü istediğiniz şekilde çalıştırdıktan sonra komutunu çalıştırın docker inspect <container name>
. Bu komut, modül ayrıntılarını JSON biçiminde görüntüler. Yapılandırdığınız parametreleri bulun ve JSON'u kopyalayın. Örneğin:
Genel senaryolar
Kapsayıcı oluşturma seçenekleri birçok senaryoya olanak tanır, ancak IoT Edge çözümleri oluştururken en sık karşılaşılan bazı senaryolar şunlardır:
- Modüllere konak depolamaya erişim verme
- Konak bağlantı noktasını modül bağlantı noktasına eşleme
- Modül belleğini ve CPU kullanımını kısıtlama
- IoT Edge modülünü GPU iyileştirme
Konak bağlantı noktasını modül bağlantı noktasına eşleme
Modülünüzün IoT Edge çözümünün dışındaki bir hizmetle iletişim kurması gerekiyorsa ve bunu yapmak için ileti yönlendirme kullanmıyorsa, bir konak bağlantı noktasını modül bağlantı noktasına eşlemeniz gerekir.
İpucu
Bu bağlantı noktası eşlemesi, aynı cihazda modülden modüle iletişim için gerekli değildir. A modülünün B modülünde barındırılan bir API'yi sorgulaması gerekiyorsa, bunu herhangi bir bağlantı noktası eşlemesi olmadan yapabilir. B modülünün dockerfile içindeki bir bağlantı noktasını kullanıma sunması gerekir, örneğin: EXPOSE 8080
. Ardından A modülü, B modülünün adını kullanarak API'yi sorgulayabilir, örneğin: http://ModuleB:8080/api
.
İlk olarak, bağlantıları dinlemek için modülün içindeki bir bağlantı noktasının kullanıma sunulduğundan emin olun. Bunu dockerfile içindeki bir EXPOSE yönergesini kullanarak yapabilirsiniz. Örneğin, EXPOSE 8080
. Kullanıma sunma yönergesi, belirtilmezse varsayılan olarak TCP protokolüne sahiptir veya UDP belirtebilirsiniz.
Ardından, modüldeki kullanıma sunulan bağlantı noktasını konak cihazındaki bir bağlantı noktasına eşlemek için Docker kapsayıcısının HostConfig grubundaki PortBindings ayarını kullanın. Örneğin, modülün içinde 8080 numaralı bağlantı noktasını kullanıma aldıysanız ve bunu konak cihazının 80 numaralı bağlantı noktasıyla eşlemek istiyorsanız, template.json dosyasındaki oluşturma seçenekleri aşağıdaki örneğe benzer olacaktır:
"createOptions": {
"HostConfig": {
"PortBindings": {
"8080/tcp": [
{
"HostPort": "80"
}
]
}
}
}
Dağıtım bildirimi için dizelendirildikten sonra, aynı yapılandırma aşağıdaki örneğe benzer olacaktır:
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"8080/tcp\":[{\"HostPort\":\"80\"}]}}}"
Modül belleğini ve CPU kullanımını kısıtlama
Bir modülün ne kadar ana bilgisayar kaynağı kullanabileceğini bildirebilirsiniz. Bu kontrol sayesinde bir modülün çok fazla bellek veya CPU kullanması ve diğer işlemlerin cihazda çalışması engellenebilir. HostConfig grubundaki Docker kapsayıcı oluşturma seçenekleriyle şu ayarları yönetebilirsiniz:
- Bellek: Bayt cinsinden bellek sınırı. Örneğin, 268435456 bayt = 256 MB.
- MemorySwap: Toplam bellek sınırı (bellek + değiştirme). Örneğin, 536870912 bayt = 512 MB.
- NanoCpus: 10-9 (1 milyar) CPU birimi cinsinden CPU kotası. Örneğin, 250000000 nanocpus = 0,25 CPU.
template.json biçiminde, bu değerler aşağıdaki örneğe benzer olacaktır:
"createOptions": {
"HostConfig": {
"Memory": 268435456,
"MemorySwap": 536870912,
"NanoCpus": 250000000
}
}
Son dağıtım bildirimi için dize eklendikten sonra bu değerler aşağıdaki örneğe benzer olacaktır:
"createOptions":"{\"HostConfig\":{\"Memory\":268435456,\"MemorySwap\":536870912,\"CpuPeriod\":25000}}"
IoT Edge modülünü GPU iyileştirme
IoT Edge modülünüzü GPU için iyileştirilmiş bir sanal makinede çalıştırıyorsanız, GPU'nuza bağlanmak için bir IoT Edge modülünü de etkinleştirebilirsiniz. Bunu mevcut bir modülle yapmak için , öğesine createOptions
bazı belirtimler ekleyin:
{"HostConfig": {"DeviceRequests": [{"Count": -1,"Capabilities": [["gpu"]]}]}}
Bu ayarların başarıyla eklendiğini onaylamak için Docker inspect komutunu kullanarak JSON çıktısındaki yeni ayarı görün.
sudo docker inspect <YOUR-MODULE-NAME>
Cihazınızın ve sanal makinenizin GPU'ya nasıl bağlandığını öğrenmek için bkz . GPU için IoT Edge modülünü yapılandırma, bağlama ve doğrulama.
Sonraki adımlar
Eylemdeki oluşturma seçeneklerine ilişkin diğer örnekler için aşağıdaki IoT Edge örneklerine bakın: