Konsep

Edit This Page

Dual-stack IPv4/IPv6

FEATURE STATE: Kubernetes v1.16 [alpha]

Dual-stack IPv4/IPv6 memungkinkan pengalokasian alamat IPv4 dan IPv6 untuk PodUnit Kubernetes yang paling sederhana dan kecil. Sebuah Pod merepresentasikan sebuah set kontainer yang dijalankan pada kluster kamu. dan ServiceSebuah Cara untuk mengekspos aplikasi yang berjalan pada sebuah kumpulan Pod sebagai layanan jaringan. .

Jika kamu mengaktifkan jaringan dual-stack IPv4/IPv6 untuk klaster Kubernetes kamu, klaster akan mendukung pengalokasian kedua alamat IPv4 dan IPv6 secara bersamaan.

Fitur-fitur yang didukung

Mengaktifkan dual-stack IPv4 / IPv6 pada klaster Kubernetes kamu untuk menyediakan fitur-fitur berikut ini:

  • Jaringan Pod dual-stack (pengalokasian sebuah alamat IPv4 dan IPv6 untuk setiap Pod)
  • Service yang mendukung IPv4 dan IPv6 (setiap Service hanya untuk satu keluarga alamat)
  • Perutean Pod ke luar klaster (misalnya Internet) melalui antarmuka IPv4 dan IPv6

Prasyarat

Prasyarat berikut diperlukan untuk menggunakan dual-stack IPv4/IPv6 pada klaster Kubernetes :

  • Kubernetes versi 1.16 atau yang lebih baru
  • Dukungan dari penyedia layanan untuk jaringan dual-stack (Penyedia layanan cloud atau yang lainnya harus dapat menyediakan antarmuka jaringan IPv4/IPv6 yang dapat dirutekan) untuk Node Kubernetes
  • Sebuah plugin jaringan yang mendukung dual-stack (seperti Kubenet atau Calico)
  • Kube-proxy yang berjalan dalam mode IPVS

Mengaktifkan dual-stack IPv4/IPv6

Untuk mengaktifkan dual-stack IPv4/IPv6, aktifkan gerbang fitur (feature gate) IPv6DualStack untuk komponen-komponen yang relevan dari klaster kamu, dan tetapkan jaringan dual-stack pada klaster:

  • kube-controller-manager:
    • --feature-gates="IPv6DualStack=true"
    • --cluster-cidr=<IPv4 CIDR>,<IPv6 CIDR> misalnya --cluster-cidr=10.244.0.0/16,fc00::/24
    • --service-cluster-ip-range=<IPv4 CIDR>,<IPv6 CIDR>
    • --node-cidr-mask-size-ipv4|--node-cidr-mask-size-ipv6 nilai bawaannya adalah /24 untuk IPv4 dan /64 untuk IPv6
  • kubelet:
    • --feature-gates="IPv6DualStack=true"
  • kube-proxy:
    • --proxy-mode=ipvs
    • --cluster-cidr=<IPv4 CIDR>,<IPv6 CIDR>
    • --feature-gates="IPv6DualStack=true"
Perhatian: Jika kamu menentukan blok alamat IPv6 yang lebih besar dari /24 melalui --cluster-cidr pada baris perintah, maka penetapan tersebut akan gagal.

Service

Jika klaster kamu mengaktifkan jaringan dual-stack IPv4/IPv6, maka kamu dapat membuat ServiceSebuah Cara untuk mengekspos aplikasi yang berjalan pada sebuah kumpulan Pod sebagai layanan jaringan. dengan alamat IPv4 atau IPv6. Kamu dapat memilih keluarga alamat untuk clusterIP
Service kamu dengan mengatur bagian, .spec.ipFamily, pada Service tersebut. Kamu hanya dapat mengatur bagian ini saat membuat Service baru. Mengatur bagian .spec.ipFamily bersifat opsional dan hanya boleh digunakan jika kamu berencana untuk mengaktifkan Service Sebuah Cara untuk mengekspos aplikasi yang berjalan pada sebuah kumpulan Pod sebagai layanan jaringan. dan Ingress Sebuah obyek API yang mengatur akses eksternal terhadap Service yang ada di dalam klaster, biasanya dalam bentuk request HTTP. IPv4 dan IPv6 pada klaster kamu. Konfigurasi bagian ini bukanlah syarat untuk lalu lintas [egress] (#lalu-lintas-egress).

Catatan: Keluarga alamat bawaan untuk klaster kamu adalah keluarga alamat dari rentang clusterIP Service pertama yang dikonfigurasi melalui opsi --service-cluster-ip-range pada kube-controller-manager.

Kamu dapat mengatur .spec.ipFamily menjadi salah satu dari:

  • IPv4: Dimana server API akan mengalokasikan IP dari service-cluster-ip-range yaitu ipv4
  • IPv6: Dimana server API akan mengalokasikan IP dari service-cluster-ip-range yaitu ipv6

Spesifikasi Service berikut ini tidak memasukkan bagian ipFamily. Kubernetes akan mengalokasikan alamat IP (atau yang dikenal juga sebagai “cluster IP") dari service-cluster-ip-range yang dikonfigurasi pertama kali untuk Service ini.

service/networking/dual-stack-default-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376

Spesifikasi Service berikut memasukkan bagian ipFamily. Sehingga Kubernetes akan mengalokasikan alamat IPv6 (atau yang dikenal juga sebagai “cluster IP") dari service-cluster-ip-range yang dikonfigurasi untuk Service ini.

service/networking/dual-stack-ipv6-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  ipFamily: IPv6
  selector:
    app: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376

Sebagai perbandingan, spesifikasi Service berikut ini akan dialokasikan sebuah alamat IPv4 (atau yang dikenal juga sebagai “cluster IP") dari service-cluster-ip-range yang dikonfigurasi untuk Service ini.

service/networking/dual-stack-ipv4-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  ipFamily: IPv4
  selector:
    app: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376

Tipe LoadBalancer

Penyedia layanan cloud yang mendukung IPv6 untuk pengaturan beban eksternal, Mengatur bagian type menjadi LoadBalancer sebagai tambahan terhadap mengatur bagian ipFamily menjadi IPv6 menyediakan sebuah cloud load balancer untuk Service kamu.

Lalu lintas egress

Penggunaan blok alamat IPv6 yang dapat dirutekan dan yang tidak dapat dirutekan secara publik diperbolehkan selama CNIContainer network interface (CNI) plugins are a type of Network plugin that adheres to the appc/CNI specification. dari penyedia layanan dapat mengimplementasikan transportasinya. Jika kamu memiliki Pod yang menggunakan IPv6 yang dapat dirutekan secara publik dan ingin agar Pod mencapai tujuan di luar klaster (misalnya Internet publik), kamu harus mengatur IP samaran untuk lalu lintas keluar dan balasannya. ip-masq-agent bersifat dual-stack aware, jadi kamu bisa menggunakan ip-masq-agent untuk masquerading IP dari klaster dual-stack.

Masalah-masalah yang diketahui

  • Kubenet memaksa pelaporan posisi IP untuk IPv4,IPv6 IP (–cluster-cidr)

Selanjutnya

Masukan