Asas Kubernetes · Pelajaran

DNS dan Penemuan Perkhidmatan

Fahami cara Pod mencari satu sama lain menggunakan DNS terbina dalam Kubernetes serta cara penemuan Perkhidmatan berfungsi di sebalik tabir.

Pelajaran 4 daripada 413 langkah

DNS dan Penemuan Perkhidmatan ialah pelajaran Asas Kubernetes percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Asas Kubernetes, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Asas Kubernetes merangkumi sejumlah 4 pelajaran.

Masalah Penemuan Perkhidmatan

Pod datang dan pergi, dan IP-nya sentiasa berubah. Menetapkan IP secara tetap akan gagal serta-merta. Kubernetes menyelesaikan masalah ini dengan penemuan perkhidmatan berasaskan DNS.

Daripada menggunakan IP, Anda berhubung dengan nama yang stabil.

DNS Kluster

Setiap kluster menjalankan perkhidmatan DNS (biasanya CoreDNS). Perkhidmatan ini mencipta rekod DNS secara automatik untuk perkhidmatan dan pod, supaya nama dapat diselesaikan kepada ClusterIP yang betul.

Nama DNS Perkhidmatan

Sebuah perkhidmatan menerima nama DNS mengikut corak yang boleh dijangka:

service-name.namespace.svc.cluster.local

Dalam ruang nama yang sama, Anda hanya perlu menggunakan service-name yang ringkas.

# from a Pod in the same namespace
curl http://payment-service:8080

# fully qualified, from any namespace
curl http://payment-service.shop.svc.cluster.local:8080

Ruang Nama dan Penamaan

Ruang nama ialah sebahagian daripada nama tersebut. Untuk mencapai perkhidmatan dalam ruang nama lain, sertakannya: service.namespace.

# Pod in 'frontend' namespace calling 'backend' namespace
curl http://api.backend.svc.cluster.local

Menguji DNS daripada Pod

Anda boleh melancarkan pod sementara untuk menguji penyelesaian nama.

kubectl run dnstest --image=busybox:1.36 --rm -it --restart=Never -- nslookup payment-service

Cara CoreDNS Menyelesaikan Nama

Apabila pod membuat pertanyaan nama, permintaan itu dihantar kepada CoreDNS. CoreDNS mencari perkhidmatan yang sepadan dan mengembalikan ClusterIP-nya. Untuk perkhidmatan tanpa kepala, CoreDNS mengembalikan IP pod secara terus.

Perkhidmatan Tanpa Kepala

Perkhidmatan tanpa kepala (clusterIP: None) melangkau IP maya tunggal. Sebaliknya, DNS mengembalikan IP setiap pod, yang penting untuk aplikasi berkeadaan yang mengalamatkan pod secara terus.

apiVersion: v1
kind: Service
metadata:
  name: db
spec:
  clusterIP: None
  selector:
    app: db
  ports:
  - port: 5432

Rekod DNS Pod

Dengan perkhidmatan tanpa kepala, setiap pod sokongan juga boleh menerima rekod DNS sendiri. Ini berguna untuk StatefulSets yang mempunyai identiti stabil seperti db-0, db-1.

# stable per-Pod name in a StatefulSet
curl http://db-0.db.default.svc.cluster.local:5432

Memeriksa resolv.conf Pod

Kubernetes memasukkan konfigurasi DNS ke dalam setiap pod. Domain carian membolehkan nama ringkas diselesaikan dengan betul.

kubectl exec -it mypod -- cat /etc/resolv.conf
# nameserver 10.96.0.10
# search default.svc.cluster.local svc.cluster.local cluster.local

Pemboleh Ubah Persekitaran berbanding DNS

Kubernetes juga memasukkan maklumat sambungan perkhidmatan sebagai pemboleh ubah persekitaran, tetapi hanya untuk perkhidmatan yang telah wujud ketika pod dimulakan. DNS lebih disukai kerana sentiasa mencerminkan keadaan semasa.

Perangkap DNS Biasa

  • Terupa menyertakan ruang nama apabila memanggil merentas ruang nama
  • Mengharapkan DNS untuk perkhidmatan yang tiada pod sepadan (tiada titik akhir)
  • Menyimpan IP lama dalam aplikasi dan bukannya menyelesaikan semula nama

Pemeriksaan Pantas

Pilih format nama DNS yang betul.

Ringkasan

Anda telah mempelajari bahawa Kubernetes menggunakan CoreDNS untuk memberikan nama DNS yang stabil kepada perkhidmatan mengikut service.namespace.svc.cluster.local. Nama ringkas berfungsi dalam ruang nama, perkhidmatan tanpa kepala mendedahkan IP setiap pod dan DNS sentiasa mencerminkan keadaan kluster semasa.

Percuma untuk bermula

Pelajari Asas Kubernetes dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
12
Pelajaran
48

Soalan Lazim

Adakah pelajaran “DNS dan Penemuan Perkhidmatan” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Asas Kubernetes, termasuk “DNS dan Penemuan Perkhidmatan”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Asas Kubernetes merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “DNS dan Penemuan Perkhidmatan”?

Fahami cara Pod mencari satu sama lain menggunakan DNS terbina dalam Kubernetes serta cara penemuan Perkhidmatan berfungsi di sebalik tabir. Anda berlatih Asas Kubernetes menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Asas Kubernetes?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Asas Kubernetes di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “DNS dan Penemuan Perkhidmatan” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Asas Kubernetes ini?

Ya. Setiap pelajaran Asas Kubernetes menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Mendedahkan Aplikasi dengan Perkhidmatan
  2. Jenis Perkhidmatan: ClusterIP, NodePort, LoadBalancer
  3. Ingress untuk Akses Luaran
  4. DNS dan Penemuan Perkhidmatan
← Kembali ke Asas Kubernetes