Dokumen ini menguraikan persyaratan jaringan untuk menginstal dan mengoperasikan GKE di Bare Metal.
Persyaratan jaringan eksternal
GKE di Bare Metal memerlukan koneksi internet untuk tujuan operasional. GKE di Bare Metal mengambil komponen cluster dari Container Registry, dan cluster didaftarkan dengan Connect.
Anda dapat terhubung ke Google menggunakan internet publik melalui HTTPS, jaringan pribadi virtual (VPN), atau koneksi Dedicated Interconnect.
Jika mesin yang Anda gunakan untuk workstation admin dan node cluster menggunakan server proxy untuk mengakses internet, server proxy Anda harus mengizinkan beberapa koneksi tertentu. Untuk mengetahui detailnya, lihat bagian prasyarat di Menginstal di belakang proxy.
Persyaratan jaringan internal
GKE di Bare Metal dapat berfungsi dengan konektivitas Lapisan 2 atau Lapisan 3 antara node cluster. Node load balancer dapat berupa node bidang kontrol atau sekumpulan node khusus. Untuk mengetahui informasi selengkapnya, baca Memilih dan mengonfigurasi load balancer.
Saat Anda menggunakan load balancing Bundled Layer 2 dengan
MetalLB (spec.loadBalancer.mode: bundled
dan spec.loadBalancer.type: layer2
), node load balancer memerlukan kedekatan
Lapisan 2. Persyaratan adjacency Lapisan 2 berlaku baik saat Anda menjalankan load balancer pada node bidang kontrol maupun pada kumpulan node load balancing khusus.
Load balancing yang dipaketkan dengan BGP mendukung
protokol Lapisan 3, sehingga tidak diperlukan pengujian Lapisan 2 yang ketat.
Persyaratan untuk mesin load balancer adalah sebagai berikut:
- Untuk load balancing Lapisan 2 Paket, semua load balancer untuk cluster tertentu berada di domain Lapisan 2 yang sama. Node bidang kontrol juga harus berada dalam domain Lapisan 2 yang sama.
- Untuk load balancing Lapisan 2 Paket, semua alamat IP virtual (VIP) harus berada dalam subnet mesin load balancer dan dapat dirutekan ke gateway subnet.
- Pengguna bertanggung jawab untuk mengizinkan traffic load balancer masuk.
Jaringan pod
GKE di Bare Metal memungkinkan Anda mengonfigurasi hingga 250 pod per node. Kubernetes menetapkan blok Classless Inter-Domain Routing (CIDR) ke setiap node, sehingga setiap pod dapat memiliki alamat IP yang unik. Ukuran blok CIDR sesuai dengan jumlah maksimum pod per node. Tabel berikut mencantumkan ukuran blok CIDR yang ditetapkan Kubernetes ke setiap node berdasarkan pod maksimum yang dikonfigurasi per node:
Pod maksimum per node | Blok CIDR per node | Jumlah alamat IP |
---|---|---|
32 | /26 | 64 |
33 – 64 | /25 | 128 |
65 – 128 | /24 | 256 |
129 - 250 | /23 | 512 |
Menjalankan 250 pod per node mengharuskan Kubernetes untuk mencadangkan blok CIDR /23
untuk setiap node. Dengan asumsi bahwa cluster Anda menggunakan nilai default /16
untuk kolom clusterNetwork.pods.cidrBlocks
, cluster Anda memiliki
batas (2(23-16))=128 node. Jika ingin mengembangkan cluster di luar batas ini, Anda dapat meningkatkan nilai clusterNetwork.pods.cidrBlocks
atau mengurangi nilai nodeConfig.podDensity.maxPodsPerNode
. Metode ini memiliki beberapa kelemahan.
Deployment cluster pengguna tunggal dengan ketersediaan tinggi
Diagram berikut mengilustrasikan sejumlah konsep jaringan utama untuk GKE di Bare Metal dalam satu kemungkinan konfigurasi jaringan.
Pertimbangkan informasi berikut untuk memenuhi persyaratan jaringan:
- Node bidang kontrol menjalankan load balancer, dan semuanya memiliki konektivitas Lapisan 2, sedangkan koneksi lain, termasuk node pekerja, hanya memerlukan konektivitas Lapisan 3.
- File konfigurasi menentukan alamat IP untuk kumpulan node pekerja.
File konfigurasi juga menentukan VIP untuk tujuan
berikut:
- Service
- Masuk
- Akses bidang kontrol melalui Kubernetes API
- Anda memerlukan koneksi ke Google Cloud.
Penggunaan port
Bagian ini mengidentifikasi persyaratan port untuk GKE pada cluster Bare Metal. Tabel berikut menunjukkan cara port UDP dan TCP digunakan oleh komponen Kubernetes pada node cluster dan load balancer.
Node bidang kontrol
Versi 1.28
Protokol | Arah | Rentang port | Tujuan | Digunakan oleh |
---|---|---|---|---|
TCP | Masuk | 22 | Penyediaan dan update node cluster admin | Workstation admin |
TCP | Masuk | 2.379 - 2.381 | API klien, metrik, dan kondisi klien server etcd | kube-apiserver dan etcd |
TCP | Masuk | 2.382 - 2.384 | API klien server etcd-events, metrik, dan kondisi | kube-apiserver dan etcd-events |
TCP | Keduanya | 4240 | Health check CNI | Semua |
UDP | Masuk | 6081 | GENEVE Enkapsulasi | Milik sendiri |
TCP | Masuk | 6444 | Server Kubernetes API | Semua |
TCP | Masuk | 8443 dan 8444 | Layanan Identitas GKE v2 | Deployment ais berjalan di namespace anthos-identity-service |
TCP | Masuk | 9100 | {i>auth-proxy<i} | node-exporter |
TCP | Masuk | 9101 | Menayangkan metrik node hanya di localhost (Persyaratan port yang ditambahkan untuk versi 1.28 dan yang lebih baru.) |
node-exporter |
TCP | Masuk | 9977 | Menerima peristiwa audit dari server API | audit-proxy |
TCP | Masuk | 10250 | kubelet API |
Bidang mandiri dan kontrol |
TCP | Masuk | 10256 | Health check node | Semua |
TCP | Masuk | 10257 | kube-controller-manager (Nomor port diubah untuk versi 1.28 dan yang lebih baru.) |
Milik sendiri |
TCP | Masuk | 10259 | kube-scheduler (Nomor port diubah untuk versi 1.28 dan yang lebih tinggi.) |
Milik sendiri |
TCP | Masuk | 14443 | Layanan ANG Webhook | kube-apiserver dan ang-controller-manager |
Versi 1.16
Protokol | Arah | Rentang port | Tujuan | Digunakan oleh |
---|---|---|---|---|
TCP | Masuk | 22 | Penyediaan dan update node cluster admin | Workstation admin |
TCP | Masuk | 2.379 - 2.381 | API klien, metrik, dan kondisi klien server etcd | kube-apiserver dan etcd |
TCP | Masuk | 2.382 - 2.384 | API klien server etcd-events, metrik, dan kondisi (Persyaratan untuk port yang ditambahkan untuk versi 1.16 dan yang lebih baru.) |
kube-apiserver dan etcd-events |
TCP | Keduanya | 4240 | Health check CNI | Semua |
UDP | Masuk | 6081 | GENEVE Enkapsulasi | Milik sendiri |
TCP | Masuk | 6444 | Server Kubernetes API | Semua |
TCP | Masuk | 9100 | Metrik penayangan | node-exporter |
TCP | Masuk | 9443 | Metrik penayangan/proxy untuk komponen bidang kontrol (Persyaratan port ini untuk cluster versi 1.16 dan yang lebih lama.) | kube-control-plane-metrics-proxy |
TCP | Masuk | 9977 | Menerima peristiwa audit dari server API | audit-proxy |
TCP | Masuk | 10250 | kubelet API |
Bidang mandiri dan kontrol |
TCP | Masuk | 10251 | kube-scheduler |
Milik sendiri |
TCP | Masuk | 10252 | kube-controller-manager |
Milik sendiri |
TCP | Masuk | 10256 | Health check node | Semua |
TCP | Masuk | 14443 | Layanan ANG Webhook | kube-apiserver dan ang-controller-manager |
Versi 1.15 dan yang lebih rendah
Protokol | Arah | Rentang port | Tujuan | Digunakan oleh |
---|---|---|---|---|
TCP | Masuk | 22 | Penyediaan dan update node cluster admin | Workstation admin |
TCP | Masuk | 2.379 - 2.381 | API klien, metrik, dan kondisi klien server etcd | kube-apiserver dan etcd |
TCP | Keduanya | 4240 | Health check CNI | Semua |
UDP | Masuk | 6081 | GENEVE Enkapsulasi | Milik sendiri |
TCP | Masuk | 6444 | Server Kubernetes API | Semua |
TCP | Masuk | 9100 | Metrik penayangan | node-exporter |
TCP | Masuk | 9443 | Metrik penayangan/proxy untuk komponen bidang kontrol (Persyaratan port ini untuk cluster versi 1.16 dan yang lebih lama.) | kube-control-plane-metrics-proxy |
TCP | Masuk | 9977 | Menerima peristiwa audit dari server API | audit-proxy |
TCP | Masuk | 10250 | kubelet API |
Bidang mandiri dan kontrol |
TCP | Masuk | 10251 | kube-scheduler |
Milik sendiri |
TCP | Masuk | 10252 | kube-controller-manager |
Milik sendiri |
TCP | Masuk | 10256 | Health check node | Semua |
TCP | Masuk | 14443 | Layanan ANG Webhook | kube-apiserver dan ang-controller-manager |
Node pekerja
Versi 1.28
Protokol | Arah | Rentang port | Tujuan | Digunakan oleh |
---|---|---|---|---|
TCP | Masuk | 22 | Penyediaan dan update node cluster pengguna | Node cluster admin |
TCP | Keduanya | 4240 | Health check CNI | Semua |
UDP | Masuk | 6081 | GENEVE Enkapsulasi | Milik sendiri |
TCP | Masuk | 9100 | {i>auth-proxy<i} | node-exporter |
TCP | Masuk | 9101 | Menayangkan metrik node hanya di localhost (Persyaratan port yang ditambahkan untuk versi 1.28 dan yang lebih baru.) |
node-exporter |
TCP | Masuk | 10250 | kubelet API |
Bidang mandiri dan kontrol |
TCP | Masuk | 10256 | Health check node | Semua |
TCP | Masuk | 30.000 - 32.767 | Layanan NodePort |
Milik sendiri |
Versi 1.16
Protokol | Arah | Rentang port | Tujuan | Digunakan oleh |
---|---|---|---|---|
TCP | Masuk | 22 | Penyediaan dan update node cluster pengguna | Node cluster admin |
TCP | Keduanya | 4240 | Health check CNI | Semua |
UDP | Masuk | 6081 | GENEVE Enkapsulasi | Milik sendiri |
TCP | Masuk | 9100 | Metrik penayangan | node-exporter |
TCP | Masuk | 10250 | kubelet API |
Bidang mandiri dan kontrol |
TCP | Masuk | 10256 | Health check node | Semua |
TCP | Masuk | 30.000 - 32.767 | Layanan NodePort |
Milik sendiri |
Versi 1.15 dan yang lebih rendah
Protokol | Arah | Rentang port | Tujuan | Digunakan oleh |
---|---|---|---|---|
TCP | Masuk | 22 | Penyediaan dan update node cluster pengguna | Node cluster admin |
TCP | Keduanya | 4240 | Health check CNI | Semua |
UDP | Masuk | 6081 | GENEVE Enkapsulasi | Milik sendiri |
TCP | Masuk | 10250 | kubelet API |
Bidang mandiri dan kontrol |
TCP | Masuk | 10256 | Health check node | Semua |
TCP | Masuk | 30.000 - 32.767 | Layanan NodePort |
Milik sendiri |
Node load balancer
Versi 1.28
Protokol | Arah | Rentang port | Tujuan | Digunakan oleh |
---|---|---|---|---|
TCP | Masuk | 22 | Penyediaan dan update node cluster pengguna | Node cluster admin |
TCP | Masuk | 443 | Pengelolaan cluster Port ini dapat dikonfigurasi di konfigurasi cluster,
menggunakan kolom |
Semua |
TCP | Keduanya | 4240 | Health check CNI | Semua |
UDP | Masuk | 6081 | GENEVE Enkapsulasi | Milik sendiri |
TCP dan UDP | Masuk | 7946 | Health check MetalLB | Node load balancer |
TCP | Masuk | 10256 | Health check node | Semua |
Versi 1.16
Protokol | Arah | Rentang port | Tujuan | Digunakan oleh |
---|---|---|---|---|
TCP | Masuk | 22 | Penyediaan dan update node cluster pengguna | Node cluster admin |
TCP | Masuk | 443 | Pengelolaan cluster Port ini dapat dikonfigurasi di konfigurasi cluster,
menggunakan kolom |
Semua |
TCP | Keduanya | 4240 | Health check CNI | Semua |
UDP | Masuk | 6081 | GENEVE Enkapsulasi | Milik sendiri |
TCP | Masuk | 7946 | Health check MetalLB | node load balancer |
TCP | Masuk | 10256 | Health check node | Semua |
Versi 1.15 dan yang lebih rendah
Protokol | Arah | Rentang port | Tujuan | Digunakan oleh |
---|---|---|---|---|
TCP | Masuk | 22 | Penyediaan dan update node cluster pengguna | Node cluster admin |
TCP | Masuk | 443 | Pengelolaan cluster Port ini dapat dikonfigurasi di konfigurasi cluster,
menggunakan kolom |
Semua |
TCP | Keduanya | 4240 | Health check CNI | Semua |
UDP | Masuk | 6081 | GENEVE Enkapsulasi | Milik sendiri |
TCP | Masuk | 7946 | Health check MetalLB | node load balancer |
TCP | Masuk | 10256 | Health check node | Semua |
Persyaratan port multi-cluster
Dalam konfigurasi multi-cluster, cluster yang ditambahkan harus menyertakan port berikut agar dapat berkomunikasi dengan cluster admin.
Protokol | Arah | Rentang port | Tujuan | Digunakan oleh |
---|---|---|---|---|
TCP | Masuk | 22 | Penyediaan dan update node cluster | Semua node |
TCP | Masuk | 443 | Server Kubernetes API untuk cluster yang ditambahkan Port ini dapat dikonfigurasi di konfigurasi cluster, menggunakan kolom |
Node bidang kontrol dan load balancer |
Mengonfigurasi port yang dilindungi firewall
Anda tidak perlu menonaktifkan firewall untuk menjalankan GKE di Bare Metal di Red
Hat Enterprise Linux (RHEL). Untuk menggunakan firewall, Anda harus membuka port UDP dan TCP
yang digunakan oleh node bidang kontrol, pekerja, dan load balancer seperti yang dijelaskan dalam
Penggunaan port di halaman ini. Contoh konfigurasi berikut
menunjukkan cara membuka port dengan firewall-cmd
, utilitas command line
yang dijadikan firewall. Anda harus menjalankan perintah sebagai pengguna root.
Contoh konfigurasi node bidang kontrol
Blok perintah berikut menunjukkan contoh cara membuka port yang diperlukan pada server yang menjalankan node bidang kontrol:
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --permanent --zone=public --add-port=4240/tcp
firewall-cmd --permanent --zone=public --add-port=6444/tcp
firewall-cmd --permanent --zone=public --add-port=6081/udp
firewall-cmd --permanent --zone=public --add-port=10250-10252/tcp
firewall-cmd --permanent --zone=public --add-port=10256/tcp
firewall-cmd --permanent --zone=public --add-port=2379-2380/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=30000-32767/tcp
firewall-cmd --permanent --new-zone=k8s-pods
firewall-cmd --permanent --zone=k8s-pods --add-source PODS_CIDR
firewall-cmd --permanent --zone=k8s-pods --set-target=ACCEPT
firewall-cmd --reload
Ganti PODS_CIDR
dengan blok CIDR yang disediakan untuk pod Anda yang dikonfigurasi di kolom clusterNetwork.pods.cidrBlocks
. Blok CIDR default untuk pod adalah 192.168.0.0/16
.
Konfigurasi contoh node pekerja
Blok perintah berikut menunjukkan contoh cara membuka port yang diperlukan pada server yang menjalankan worker node:
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --permanent --zone=public --add-port=4240/tcp
firewall-cmd --permanent --zone=public --add-port=6444/tcp
firewall-cmd --permanent --zone=public --add-port=6081/udp
firewall-cmd --permanent --zone=public --add-port=10250/tcp
firewall-cmd --permanent --zone=public --add-port=10256/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=30000-32767/tcp
firewall-cmd --permanent --new-zone=k8s-pods
firewall-cmd --permanent --zone=k8s-pods --add-source PODS_CIDR
firewall-cmd --permanent --zone=k8s-pods --set-target=ACCEPT
firewall-cmd --reload
Ganti PODS_CIDR
dengan blok CIDR yang disediakan untuk pod Anda yang dikonfigurasi di kolom clusterNetwork.pods.cidrBlocks
. Blok CIDR default untuk pod adalah 192.168.0.0/16
.
Konfigurasi contoh node load balancer
Blok perintah berikut menunjukkan contoh cara membuka port yang diperlukan pada server yang menjalankan node load balancer:
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --permanent --zone=public --add-port=4240/tcp
firewall-cmd --permanent --zone=public --add-port=6444/tcp
firewall-cmd --permanent --zone=public --add-port=7946/tcp
firewall-cmd --permanent --zone=public --add-port=7946/udp
firewall-cmd --permanent --zone=public --add-port=6081/udp
firewall-cmd --permanent --zone=public --add-port=10250/tcp
firewall-cmd --permanent --zone=public --add-port=10256/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=30000-32767/tcp
firewall-cmd --permanent --new-zone=k8s-pods
firewall-cmd --permanent --zone=k8s-pods --add-source PODS_CIDR
firewall-cmd --permanent --zone=k8s-pods --set-target=ACCEPT
firewall-cmd --reload
Ganti PODS_CIDR
dengan blok CIDR yang disediakan untuk pod Anda yang dikonfigurasi di kolom clusterNetwork.pods.cidrBlocks
. Blok CIDR default untuk pod adalah 192.168.0.0/16
.
Konfirmasi konfigurasi port Anda
Untuk memverifikasi konfigurasi port Anda, gunakan langkah-langkah berikut pada node bidang kontrol, pekerja, dan load balancer:
Jalankan perintah Network Mapper berikut untuk melihat port yang terbuka:
nmap localhost
Jalankan perintah berikut untuk mendapatkan setelan konfigurasi firewall:
firewall-cmd --zone=public --list-all-policies firewall-cmd --zone=public --list-ports firewall-cmd --zone=public --list-services firewall-cmd --zone=k8s-pods --list-all-policies firewall-cmd --zone=k8s-pods --list-ports firewall-cmd --zone=k8s-pods --list-services
Jika perlu, jalankan kembali perintah dari bagian sebelumnya untuk mengonfigurasi node Anda dengan benar. Anda mungkin perlu menjalankan perintah sebagai pengguna root.
Masalah umum untuk firewall
Saat menjalankan GKE pada Bare Metal dengan firewalld
yang diaktifkan di Red Hat Enterprise Linux (RHEL), perubahan pada firewalld
dapat menghapus rantai iptables
Cilium di jaringan host. Rantai iptables
ditambahkan oleh Pod anetd
saat dimulai. Hilangnya rantai iptables
Cilium menyebabkan Pod di
Node kehilangan konektivitas jaringan di luar Node.
Perubahan pada firewalld
yang menghapus rantai iptables
mencakup, tetapi tidak
terbatas pada:
Memulai ulang
firewalld
, menggunakansystemctl
Memuat ulang
firewalld
dengan klien command line (firewall-cmd --reload
)
Untuk menerapkan perubahan firewalld
tanpa menghapus rantai iptables
, mulai ulang anetd
di Node:
Temukan dan hapus Pod
anetd
dengan perintah berikut untuk memulai ulanganetd
:kubectl get pods -n kube-system kubectl delete pods -n kube-system ANETD_XYZ
Ganti ANETD_XYZ dengan nama Pod
anetd
.