1. Pengantar
GCP telah lama mendukung beberapa antarmuka di tingkat instance VM. Dengan beberapa antarmuka, satu VM dapat menghubungkan hingga 7 antarmuka baru (default + 7 antarmuka) ke berbagai VPC. Jaringan GKE kini memperluas perilaku ini ke Pod yang berjalan di Node. Sebelum fitur ini, cluster GKE memungkinkan semua NodePool hanya untuk memiliki satu antarmuka, sehingga dipetakan ke satu VPC. Dengan fitur Multi-Jaringan di Pod, pengguna kini dapat mengaktifkan lebih dari satu antarmuka pada Node dan Pod di cluster GKE.
Yang akan Anda bangun
Dalam tutorial ini, Anda akan membangun lingkungan multinic GKE komprehensif yang menggambarkan kasus penggunaan yang diilustrasikan pada Gambar 1.
- Buat netdevice-l3-pod dengan memanfaatkan workingbox untuk:
- Lakukan PING & {i>wget -S<i} ke instance netdevice-apache di netdevice-vpc melalui eth2
- Lakukan PING & wget -S ke instance l3-apache di l3-vpc melalui eth1
- Membuat l3-pod dengan memanfaatkan {i>sibukbox<i} untuk melakukan PING & wget -S ke instance l3-apache di atas eth1
Pada kedua kasus penggunaan tersebut, antarmuka eth0 dari pod terhubung ke jaringan default.
Gambar 1
Yang akan Anda pelajari
- Cara membuat subnet jenis l3
- Cara membuat subnet jenis netdevice
- Cara membangun node pool GKE multi-nic
- Cara membuat pod dengan kemampuan netdevice dan l3
- Cara membuat pod dengan kemampuan l3
- Cara membuat dan memvalidasi jaringan objek GKE
- Cara memvalidasi konektivitas ke server Apache jarak jauh menggunakan log PING, wget, dan Firewall
Yang Anda butuhkan
- Project Google Cloud
2. Terminologi dan Konsep
VPC Utama: VPC utama adalah VPC yang telah dikonfigurasi sebelumnya, yang dilengkapi dengan serangkaian setelan dan resource default. Cluster GKE dibuat di VPC ini.
Subnet: Di Google Cloud, subnet adalah cara untuk membuat Classless Inter-Domain Routing (CIDR) dengan netmask di VPC. Subnet memiliki satu rentang alamat IP primer yang ditetapkan ke node dan dapat memiliki beberapa rentang sekunder yang bisa dimiliki Pod dan Service.
Node-jaringan: Jaringan node mengacu pada kombinasi khusus dari pasangan VPC dan subnet. Dalam jaringan node ini, node yang termasuk dalam kumpulan node adalah alamat IP yang dialokasikan dari rentang alamat IP utama.
Rentang sekunder: Rentang sekunder Google Cloud adalah CIDR dan netmask milik sebuah region di VPC. GKE menggunakannya sebagai jaringan Pod Lapisan 3. VPC dapat memiliki beberapa rentang sekunder, dan Pod dapat terhubung ke beberapa jaringan Pod.
Jaringan (L3 atau perangkat): Objek jaringan yang berfungsi sebagai titik koneksi untuk Pod. Dalam tutorial, jaringannya adalah l3-network dan netdevice-network, tempat perangkat dapat berupa netdevice atau dpdk. Jaringan default bersifat wajib dan dibuat saat pembuatan cluster berdasarkan subnet nodepool default.
Jaringan Lapisan 3 sesuai dengan rentang sekunder pada subnet, yang direpresentasikan sebagai:
VPC -> Nama Subnet -> Nama Rentang Sekunder
Jaringan perangkat berkaitan dengan subnet pada VPC, yang direpresentasikan sebagai:
VPC -> Nama Subnet
Jaringan Pod default: Google Cloud membuat jaringan Pod default selama pembuatan cluster. Jaringan Pod-default menggunakan VPC utama sebagai jaringan node. Jaringan Pod default tersedia di semua node cluster dan Pod secara default.
Pod dengan beberapa antarmuka: Pod dengan beberapa antarmuka di GKE tidak dapat terhubung ke jaringan Pod yang sama karena setiap antarmuka Pod harus terhubung ke jaringan unik.
Mengupdate project agar mendukung codelab
Codelab ini menggunakan $variables untuk membantu implementasi konfigurasi gcloud di Cloud Shell.
Di dalam Cloud Shell, lakukan hal berikut:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
3. Penyiapan VPC Utama
Membuat VPC utama
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute networks create primary-vpc --project=$projectid --subnet-mode=custom
Membuat node dan subnet sekunder
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute networks subnets create primary-node-subnet --project=$projectid --range=192.168.0.0/24 --network=primary-vpc --region=us-central1 --enable-private-ip-google-access --secondary-range=sec-range-primay-vpc=10.0.0.0/21
4. Pembuatan cluster GKE
Buat cluster GKE pribadi yang menentukan subnet primer-vpc untuk membuat node pool default dengan flag yang diperlukan –enable-multi-networking dan –enable-dataplane-v2 untuk mendukung node pool multi-nic.
Di dalam Cloud Shell, buat cluster GKE:
gcloud container clusters create multinic-gke \
--zone "us-central1-a" \
--enable-dataplane-v2 \
--enable-ip-alias \
--enable-multi-networking \
--network "primary-vpc" --subnetwork "primary-node-subnet" \
--num-nodes=2 \
--max-pods-per-node=32 \
--cluster-secondary-range-name=sec-range-primay-vpc \
--no-enable-master-authorized-networks \
--release-channel "regular" \
--enable-private-nodes --master-ipv4-cidr "100.100.10.0/28" \
--enable-ip-alias
Memvalidasi cluster multinic-gke
Di dalam Cloud Shell, lakukan autentikasi dengan cluster:
gcloud container clusters get-credentials multinic-gke --zone us-central1-a --project $projectid
Di dalam Cloud Shell, validasi dua node dihasilkan dari kumpulan default:
kubectl get nodes
Contoh:
user@$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
gke-multinic-gke-default-pool-3d419e48-1k2p Ready <none> 2m4s v1.27.3-gke.100
gke-multinic-gke-default-pool-3d419e48-xckb Ready <none> 2m4s v1.27.3-gke.100
5. pengaturan netdevice-vpc
Membuat jaringan netdevice-vpc
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute networks create netdevice-vpc --project=$projectid --subnet-mode=custom
Membuat subnet netdevice-vpc
Di dalam Cloud Shell, buat subnet yang digunakan untuk jaringan multinic netdevice-network:
gcloud compute networks subnets create netdevice-subnet --project=$projectid --range=192.168.10.0/24 --network=netdevice-vpc --region=us-central1 --enable-private-ip-google-access
Di dalam Cloud Shell, buat subnet untuk instance netdevice-apache:
gcloud compute networks subnets create netdevice-apache --project=$projectid --range=172.16.10.0/28 --network=netdevice-vpc --region=us-central1 --enable-private-ip-google-access
Konfigurasi Cloud Router dan NAT
Cloud NAT digunakan dalam tutorial untuk penginstalan paket software karena instance VM tidak memiliki alamat IP eksternal.
Di dalam Cloud Shell, buat router cloud.
gcloud compute routers create netdevice-cr --network netdevice-vpc --region us-central1
Di dalam Cloud Shell, buat gateway NAT.
gcloud compute routers nats create cloud-nat-netdevice --router=netdevice-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
Membuat instance netdevice-apache
Di bagian berikut, Anda akan membuat instance netdevice-apache.
Di dalam Cloud Shell, buat instance:
gcloud compute instances create netdevice-apache \
--project=$projectid \
--machine-type=e2-micro \
--image-family debian-11 \
--no-address \
--image-project debian-cloud \
--zone us-central1-a \
--subnet=netdevice-apache \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart
echo 'Welcome to the netdevice-apache instance !!' | tee /var/www/html/index.html
EOF"
6. Pengaturan l3-vpc
Membuat jaringan l3-vpc
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute networks create l3-vpc --project=$projectid --subnet-mode=custom
Membuat subnet l3-vpc
Di dalam Cloud Shell, buat subnet rentang utama dan sekunder. {i>Secondary-range<i} (sec-range-l3-subnet) digunakan untuk jaringan l3-multinik:
gcloud compute networks subnets create l3-subnet --project=$projectid --range=192.168.20.0/24 --network=l3-vpc --region=us-central1 --enable-private-ip-google-access --secondary-range=sec-range-l3-subnet=10.0.8.0/21
Di dalam Cloud Shell, buat subnet untuk instance l3-apache:
gcloud compute networks subnets create l3-apache --project=$projectid --range=172.16.20.0/28 --network=l3-vpc --region=us-central1 --enable-private-ip-google-access
Konfigurasi Cloud Router dan NAT
Cloud NAT digunakan dalam tutorial untuk penginstalan paket software karena instance VM tidak memiliki alamat IP eksternal.
Di dalam Cloud Shell, buat router cloud.
gcloud compute routers create l3-cr --network l3-vpc --region us-central1
Di dalam Cloud Shell, buat gateway NAT.
gcloud compute routers nats create cloud-nat-l3 --router=l3-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
Membuat instance l3-apache
Di bagian berikut, Anda akan membuat instance l3-apache.
Di dalam Cloud Shell, buat instance:
gcloud compute instances create l3-apache \
--project=$projectid \
--machine-type=e2-micro \
--image-family debian-11 \
--no-address \
--image-project debian-cloud \
--zone us-central1-a \
--subnet=l3-apache \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart
echo 'Welcome to the l3-apache instance !!' | tee /var/www/html/index.html
EOF"
7. Membuat node pool multinic
Di bagian berikut, Anda akan membuat nodepool multinic yang terdiri dari flag berikut:
–additional-node-network (Diperlukan untuk antarmuka Jenis perangkat)
Contoh:
--additional-node-network network=netdevice-vpc,subnetwork=netdevice-subnet
–additional-node-network & –additional-pod-network ( Diperlukan untuk antarmuka jenis L3)
Contoh:
--additional-node-network network=l3-vpc,subnetwork=l3-subnet --additional-pod-network subnetwork=l3-subnet,pod-ipv4-range=sec-range-l3-subnet,max-pods-per-node=8
Jenis mesin: Saat men-deploy kumpulan node, pertimbangkan dependensi jenis mesin. Misalnya, jenis mesin seperti "e2-standard-4" dengan 4 vCPU dapat mendukung hingga total 4 VPC. Sebagai contoh, netdevice-l3-pod akan memiliki total 3 interface (default, netdevice dan L3) sehingga jenis mesin yang digunakan dalam tutorial adalah e2-standard-4.
Di dalam Cloud Shell, buat node pool yang terdiri dari Jenis Perangkat dan L3:
gcloud container --project "$projectid" node-pools create "multinic-node-pool" --cluster "multinic-gke" --zone "us-central1-a" --additional-node-network network=netdevice-vpc,subnetwork=netdevice-subnet --additional-node-network network=l3-vpc,subnetwork=l3-subnet --additional-pod-network subnetwork=l3-subnet,pod-ipv4-range=sec-range-l3-subnet,max-pods-per-node=8 --machine-type "e2-standard-4"
8. Memvalidasi kumpulan node multnic
Di dalam Cloud Shell, validasi tiga node yang dihasilkan dari multinic-node-pool:
kubectl get nodes
Contoh:
user@$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
gke-multinic-gke-default-pool-3d419e48-1k2p Ready <none> 15m v1.27.3-gke.100
gke-multinic-gke-default-pool-3d419e48-xckb Ready <none> 15m v1.27.3-gke.100
gke-multinic-gke-multinic-node-pool-135699a1-0tfx Ready <none> 3m51s v1.27.3-gke.100
gke-multinic-gke-multinic-node-pool-135699a1-86gz Ready <none> 3m51s v1.27.3-gke.100
gke-multinic-gke-multinic-node-pool-135699a1-t66p Ready <none> 3m51s v1.27.3-gke.100
9. Membuat jaringan netdevice
Pada langkah-langkah berikut, Anda akan membuat objek kubernetes Jaringan dan GKENetworkParamSet untuk membuat netdevice-network yang akan digunakan untuk mengaitkan Pod di langkah-langkah berikutnya.
Membuat objek netdevice-network
Di dalam Cloud Shell, buat objek jaringan YAML netdevice-network.yaml menggunakan editor VI atau nano. Catat "rute ke" adalah subnet 172.16.10.0/28 (netdevice-apache) di netdevice-vpc.
apiVersion: networking.gke.io/v1
kind: Network
metadata:
name: netdevice-network
spec:
type: "Device"
parametersRef:
group: networking.gke.io
kind: GKENetworkParamSet
name: "netdevice"
routes:
- to: "172.16.10.0/28"
Di dalam Cloud Shell, terapkan netdevice-network.yaml:
kubectl apply -f netdevice-network.yaml
Di dalam Cloud Shell, validasi bahwa Jenis Status netdevice-network adalah Siap.
kubectl describe networks netdevice-network
Contoh:
user@$ kubectl describe networks netdevice-network
Name: netdevice-network
Namespace:
Labels: <none>
Annotations: networking.gke.io/in-use: false
API Version: networking.gke.io/v1
Kind: Network
Metadata:
Creation Timestamp: 2023-07-30T22:37:38Z
Generation: 1
Resource Version: 1578594
UID: 46d75374-9fcc-42be-baeb-48e074747052
Spec:
Parameters Ref:
Group: networking.gke.io
Kind: GKENetworkParamSet
Name: netdevice
Routes:
To: 172.16.10.0/28
Type: Device
Status:
Conditions:
Last Transition Time: 2023-07-30T22:37:38Z
Message: GKENetworkParamSet resource was deleted: netdevice
Reason: GNPDeleted
Status: False
Type: ParamsReady
Last Transition Time: 2023-07-30T22:37:38Z
Message: Resource referenced by params is not ready
Reason: ParamsNotReady
Status: False
Type: Ready
Events: <none>
Membuat GKENetworkParamSet
Di dalam Cloud Shell, buat objek jaringan YAML netdevice-network-parm.yaml menggunakan editor VI atau nano. Spesifikasi ini dipetakan ke deployment subnet netdevice-vpc.
apiVersion: networking.gke.io/v1
kind: GKENetworkParamSet
metadata:
name: "netdevice"
spec:
vpc: "netdevice-vpc"
vpcSubnet: "netdevice-subnet"
deviceMode: "NetDevice"
Di dalam Cloud Shell, terapkan netdevice-network-parm.yaml
kubectl apply -f netdevice-network-parm.yaml
Di dalam Cloud Shell, validasi Status Alasan GNPParmsReady dan NetworkReady netdevice-network:
kubectl describe networks netdevice-network
Contoh:
user@$ kubectl describe networks netdevice-network
Name: netdevice-network
Namespace:
Labels: <none>
Annotations: networking.gke.io/in-use: false
API Version: networking.gke.io/v1
Kind: Network
Metadata:
Creation Timestamp: 2023-07-30T22:37:38Z
Generation: 1
Resource Version: 1579791
UID: 46d75374-9fcc-42be-baeb-48e074747052
Spec:
Parameters Ref:
Group: networking.gke.io
Kind: GKENetworkParamSet
Name: netdevice
Routes:
To: 172.16.10.0/28
Type: Device
Status:
Conditions:
Last Transition Time: 2023-07-30T22:39:44Z
Message:
Reason: GNPParamsReady
Status: True
Type: ParamsReady
Last Transition Time: 2023-07-30T22:39:44Z
Message:
Reason: NetworkReady
Status: True
Type: Ready
Events: <none>
Di dalam Cloud Shell, validasi blok CIDR gkenetworkparamset 192.168.10.0/24 yang digunakan untuk antarmuka Pod di langkah berikutnya.
kubectl describe gkenetworkparamsets.networking.gke.io netdevice
Contoh:
user@$ kubectl describe gkenetworkparamsets.networking.gke.io netdevice
Name: netdevice
Namespace:
Labels: <none>
Annotations: <none>
API Version: networking.gke.io/v1
Kind: GKENetworkParamSet
Metadata:
Creation Timestamp: 2023-07-30T22:39:43Z
Finalizers:
networking.gke.io/gnp-controller
networking.gke.io/high-perf-finalizer
Generation: 1
Resource Version: 1579919
UID: 6fe36b0c-0091-4b6a-9d28-67596cbce845
Spec:
Device Mode: NetDevice
Vpc: netdevice-vpc
Vpc Subnet: netdevice-subnet
Status:
Conditions:
Last Transition Time: 2023-07-30T22:39:43Z
Message:
Reason: GNPReady
Status: True
Type: Ready
Network Name: netdevice-network
Pod CID Rs:
Cidr Blocks:
192.168.10.0/24
Events: <none>
10. Membuat jaringan l3
Pada langkah-langkah berikut, Anda akan membuat objek kubernetes Jaringan dan GKENetworkParamSet untuk membuat jaringan l3 yang akan digunakan untuk mengaitkan Pod di langkah-langkah berikutnya.
Membuat objek jaringan l3
Di dalam Cloud Shell, buat objek jaringan YAML l3-network.yaml menggunakan editor VI atau nano. Catat "rute ke" adalah subnet 172.16.20.0/28 (l3-apache) di l3-vpc.
apiVersion: networking.gke.io/v1
kind: Network
metadata:
name: l3-network
spec:
type: "L3"
parametersRef:
group: networking.gke.io
kind: GKENetworkParamSet
name: "l3-network"
routes:
- to: "172.16.20.0/28"
Di dalam Cloud Shell, terapkan l3-network.yaml:
kubectl apply -f l3-network.yaml
Di dalam Cloud Shell, validasi Jenis Status l3-network adalah Siap.
kubectl describe networks l3-network
Contoh:
user@$ kubectl describe networks l3-network
Name: l3-network
Namespace:
Labels: <none>
Annotations: networking.gke.io/in-use: false
API Version: networking.gke.io/v1
Kind: Network
Metadata:
Creation Timestamp: 2023-07-30T22:43:54Z
Generation: 1
Resource Version: 1582307
UID: 426804be-35c9-4cc5-bd26-00b94be2ef9a
Spec:
Parameters Ref:
Group: networking.gke.io
Kind: GKENetworkParamSet
Name: l3-network
Routes:
to: 172.16.20.0/28
Type: L3
Status:
Conditions:
Last Transition Time: 2023-07-30T22:43:54Z
Message: GKENetworkParamSet resource was deleted: l3-network
Reason: GNPDeleted
Status: False
Type: ParamsReady
Last Transition Time: 2023-07-30T22:43:54Z
Message: Resource referenced by params is not ready
Reason: ParamsNotReady
Status: False
Type: Ready
Events: <none>
Membuat GKENetworkParamSet
Di dalam Cloud Shell, buat objek jaringan YAML l3-network-parm.yaml menggunakan editor VI atau nano. Perhatikan bahwa spesifikasi ini dipetakan ke deployment subnet l3-vpc.
apiVersion: networking.gke.io/v1
kind: GKENetworkParamSet
metadata:
name: "l3-network"
spec:
vpc: "l3-vpc"
vpcSubnet: "l3-subnet"
podIPv4Ranges:
rangeNames:
- "sec-range-l3-subnet"
Di dalam Cloud Shell, terapkan l3-network-parm.yaml
kubectl apply -f l3-network-parm.yaml
Di dalam Cloud Shell, validasi bahwa Alasan Status jaringan l3 adalah GNPParmsReady dan NetworkReady:
kubectl describe networks l3-network
Contoh:
user@$ kubectl describe networks l3-network
Name: l3-network
Namespace:
Labels: <none>
Annotations: networking.gke.io/in-use: false
API Version: networking.gke.io/v1
Kind: Network
Metadata:
Creation Timestamp: 2023-07-30T22:43:54Z
Generation: 1
Resource Version: 1583647
UID: 426804be-35c9-4cc5-bd26-00b94be2ef9a
Spec:
Parameters Ref:
Group: networking.gke.io
Kind: GKENetworkParamSet
Name: l3-network
Routes:
To: 172.16.20.0/28
Type: L3
Status:
Conditions:
Last Transition Time: 2023-07-30T22:46:14Z
Message:
Reason: GNPParamsReady
Status: True
Type: ParamsReady
Last Transition Time: 2023-07-30T22:46:14Z
Message:
Reason: NetworkReady
Status: True
Type: Ready
Events: <none>
Di dalam Cloud Shell, validasi CIDR gkenetworkparamset l3-network 10.0.8.0/21 yang digunakan untuk membuat antarmuka pod.
kubectl describe gkenetworkparamsets.networking.gke.io l3-network
Contoh:
user@$ kubectl describe gkenetworkparamsets.networking.gke.io l3-network
Name: l3-network
Namespace:
Labels: <none>
Annotations: <none>
API Version: networking.gke.io/v1
Kind: GKENetworkParamSet
Metadata:
Creation Timestamp: 2023-07-30T22:46:14Z
Finalizers:
networking.gke.io/gnp-controller
Generation: 1
Resource Version: 1583656
UID: 4c1f521b-0088-4005-b000-626ca5205326
Spec:
podIPv4Ranges:
Range Names:
sec-range-l3-subnet
Vpc: l3-vpc
Vpc Subnet: l3-subnet
Status:
Conditions:
Last Transition Time: 2023-07-30T22:46:14Z
Message:
Reason: GNPReady
Status: True
Type: Ready
Network Name: l3-network
Pod CID Rs:
Cidr Blocks:
10.0.8.0/21
Events: <none>
11. Membuat netdevice-l3-pod
Pada bagian berikut, Anda akan membuat {i>crazybox<i} yang menjalankan {i>netdevice-l3-pod<i}, yang dikenal sebagai "pisau Swiss Army" yang mendukung lebih dari 300 perintah umum. Pod dikonfigurasi untuk berkomunikasi dengan l3-vpc menggunakan eth1 dan netdevice-vpc menggunakan eth2.
Di dalam Cloud Shell, buat container kotak sibuk bernama netdevice-l3-pod.yaml menggunakan editor VI atau nano.
apiVersion: v1
kind: Pod
metadata:
name: netdevice-l3-pod
annotations:
networking.gke.io/default-interface: 'eth0'
networking.gke.io/interfaces: |
[
{"interfaceName":"eth0","network":"default"},
{"interfaceName":"eth1","network":"l3-network"},
{"interfaceName":"eth2","network":"netdevice-network"}
]
spec:
containers:
- name: netdevice-l3-pod
image: busybox
command: ["sleep", "10m"]
ports:
- containerPort: 80
restartPolicy: Always
Di dalam Cloud Shell, terapkan netdevice-l3-pod.yaml
kubectl apply -f netdevice-l3-pod.yaml
Memvalidasi pembuatan netdevice-l3-pod
Di dalam Cloud Shell, validasi bahwa netdevice-l3-pod sedang berjalan:
kubectl get pods netdevice-l3-pod
Contoh:
user@$ kubectl get pods netdevice-l3-pod
NAME READY STATUS RESTARTS AGE
netdevice-l3-pod 1/1 Running 0 74s
Di dalam Cloud Shell, validasi alamat IP yang ditetapkan ke antarmuka Pod.
kubectl get pods netdevice-l3-pod -o yaml
Dalam contoh yang diberikan, kolom networking.gke.io/pod-ips berisi alamat IP yang terkait dengan antarmuka pod dari l3-network dan netdevice-network. Alamat IP jaringan default 10.0.1.22 dirinci di bawah podIP:
user@$ kubectl get pods netdevice-l3-pod -o yaml
apiVersion: v1
kind: Pod
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{"networking.gke.io/default-interface":"eth0","networking.gke.io/interfaces":"[\n{\"interfaceName\":\"eth0\",\"network\":\"default\"},\n{\"interfaceName\":\"eth1\",\"network\":\"l3-network\"},\n{\"interfaceName\":\"eth2\",\"network\":\"netdevice-network\"}\n]\n"},"name":"netdevice-l3-pod","namespace":"default"},"spec":{"containers":[{"command":["sleep","10m"],"image":"busybox","name":"netdevice-l3-pod","ports":[{"containerPort":80}]}],"restartPolicy":"Always"}}
networking.gke.io/default-interface: eth0
networking.gke.io/interfaces: |
[
{"interfaceName":"eth0","network":"default"},
{"interfaceName":"eth1","network":"l3-network"},
{"interfaceName":"eth2","network":"netdevice-network"}
]
networking.gke.io/pod-ips: '[{"networkName":"l3-network","ip":"10.0.8.4"},{"networkName":"netdevice-network","ip":"192.168.10.2"}]'
creationTimestamp: "2023-07-30T22:49:27Z"
name: netdevice-l3-pod
namespace: default
resourceVersion: "1585567"
uid: d9e43c75-e0d1-4f31-91b0-129bc53bbf64
spec:
containers:
- command:
- sleep
- 10m
image: busybox
imagePullPolicy: Always
name: netdevice-l3-pod
ports:
- containerPort: 80
protocol: TCP
resources:
limits:
networking.gke.io.networks/l3-network.IP: "1"
networking.gke.io.networks/netdevice-network: "1"
networking.gke.io.networks/netdevice-network.IP: "1"
requests:
networking.gke.io.networks/l3-network.IP: "1"
networking.gke.io.networks/netdevice-network: "1"
networking.gke.io.networks/netdevice-network.IP: "1"
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: kube-api-access-f2wpb
readOnly: true
dnsPolicy: ClusterFirst
enableServiceLinks: true
nodeName: gke-multinic-gke-multinic-node-pool-135699a1-86gz
preemptionPolicy: PreemptLowerPriority
priority: 0
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccount: default
serviceAccountName: default
terminationGracePeriodSeconds: 30
tolerations:
- effect: NoExecute
key: node.kubernetes.io/not-ready
operator: Exists
tolerationSeconds: 300
- effect: NoExecute
key: node.kubernetes.io/unreachable
operator: Exists
tolerationSeconds: 300
- effect: NoSchedule
key: networking.gke.io.networks/l3-network.IP
operator: Exists
- effect: NoSchedule
key: networking.gke.io.networks/netdevice-network
operator: Exists
- effect: NoSchedule
key: networking.gke.io.networks/netdevice-network.IP
operator: Exists
volumes:
- name: kube-api-access-f2wpb
projected:
defaultMode: 420
sources:
- serviceAccountToken:
expirationSeconds: 3607
path: token
- configMap:
items:
- key: ca.crt
path: ca.crt
name: kube-root-ca.crt
- downwardAPI:
items:
- fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
path: namespace
status:
conditions:
- lastProbeTime: null
lastTransitionTime: "2023-07-30T22:49:28Z"
status: "True"
type: Initialized
- lastProbeTime: null
lastTransitionTime: "2023-07-30T22:49:33Z"
status: "True"
type: Ready
- lastProbeTime: null
lastTransitionTime: "2023-07-30T22:49:33Z"
status: "True"
type: ContainersReady
- lastProbeTime: null
lastTransitionTime: "2023-07-30T22:49:28Z"
status: "True"
type: PodScheduled
containerStatuses:
- containerID: containerd://dcd9ead2f69824ccc37c109a47b1f3f5eb7b3e60ce3865e317dd729685b66a5c
image: docker.io/library/busybox:latest
imageID: docker.io/library/busybox@sha256:3fbc632167424a6d997e74f52b878d7cc478225cffac6bc977eedfe51c7f4e79
lastState: {}
name: netdevice-l3-pod
ready: true
restartCount: 0
started: true
state:
running:
startedAt: "2023-07-30T22:49:32Z"
hostIP: 192.168.0.4
phase: Running
podIP: 10.0.1.22
podIPs:
- ip: 10.0.1.22
qosClass: BestEffort
startTime: "2023-07-30T22:49:28Z"
Memvalidasi rute netdevice-l3-pod
Di dalam Cloud Shell, validasi rute ke netdevice-vpc dan l3-vpc dari netdevice-l3-pod:
kubectl exec --stdin --tty netdevice-l3-pod -- /bin/sh
Buat instance, validasi antarmuka pod:
ifconfig
Pada contoh tersebut, eth0 terhubung ke jaringan default, eth1 terhubung ke jaringan l3, dan eth2 terhubung ke jaringan netdevice-.
/ # ifconfig
eth0 Link encap:Ethernet HWaddr 26:E3:1B:14:6E:0C
inet addr:10.0.1.22 Bcast:10.0.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1460 Metric:1
RX packets:5 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:446 (446.0 B) TX bytes:558 (558.0 B)
eth1 Link encap:Ethernet HWaddr 92:78:4E:CB:F2:D4
inet addr:10.0.8.4 Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST RUNNING MULTICAST MTU:1460 Metric:1
RX packets:5 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:446 (446.0 B) TX bytes:516 (516.0 B)
eth2 Link encap:Ethernet HWaddr 42:01:C0:A8:0A:02
inet addr:192.168.10.2 Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST RUNNING MULTICAST MTU:1460 Metric:1
RX packets:73 errors:0 dropped:0 overruns:0 frame:0
TX packets:50581 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:26169 (25.5 KiB) TX bytes:2148170 (2.0 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Dari netdevice-l3-pod memvalidasi rute ke netdevice-vpc (172.16.10.0/28) dan l3-vpc (172.16.20.0/28).
Buat instance, validasi rute pod:
ip route
Contoh:
/ # ip route
default via 10.0.1.1 dev eth0 #primary-vpc
10.0.1.0/24 via 10.0.1.1 dev eth0 src 10.0.1.22
10.0.1.1 dev eth0 scope link src 10.0.1.22
10.0.8.0/21 via 10.0.8.1 dev eth1 #l3-vpc (sec-range-l3-subnet)
10.0.8.1 dev eth1 scope link
172.16.10.0/28 via 192.168.10.1 dev eth2 #netdevice-vpc (netdevice-apache subnet)
172.16.20.0/28 via 10.0.8.1 dev eth1 #l3-vpc (l3-apache subnet)
192.168.10.0/24 via 192.168.10.1 dev eth2 #pod interface subnet
192.168.10.1 dev eth2 scope link
Untuk kembali ke Cloud Shell, keluar dari pod dari instance.
exit
12. Membuat l3-pod
Pada bagian berikut ini, Anda akan membuat {i>crazybox<i} yang menjalankan l3-pod, yang dikenal sebagai "pisau Swiss Army" yang mendukung lebih dari 300 perintah umum. Pod dikonfigurasi untuk berkomunikasi dengan l3-vpc hanya menggunakan eth1.
Di dalam Cloud Shell, buat container kotak yang sibuk bernama l3-pod.yaml menggunakan editor VI atau nano.
apiVersion: v1
kind: Pod
metadata:
name: l3-pod
annotations:
networking.gke.io/default-interface: 'eth0'
networking.gke.io/interfaces: |
[
{"interfaceName":"eth0","network":"default"},
{"interfaceName":"eth1","network":"l3-network"}
]
spec:
containers:
- name: l3-pod
image: busybox
command: ["sleep", "10m"]
ports:
- containerPort: 80
restartPolicy: Always
Di dalam Cloud Shell, terapkan l3-pod.yaml
kubectl apply -f l3-pod.yaml
Memvalidasi pembuatan l3-pod
Di dalam Cloud Shell, validasi bahwa netdevice-l3-pod sedang berjalan:
kubectl get pods l3-pod
Contoh:
user@$ kubectl get pods l3-pod
NAME READY STATUS RESTARTS AGE
l3-pod 1/1 Running 0 52s
Di dalam Cloud Shell, validasi alamat IP yang ditetapkan ke antarmuka Pod.
kubectl get pods l3-pod -o yaml
Dalam contoh yang diberikan, kolom networking.gke.io/pod-ips berisi alamat IP yang terkait dengan antarmuka pod dari l3-network. Alamat IP jaringan default 10.0.2.12 dirinci di bawah podIP:
user@$ kubectl get pods l3-pod -o yaml
apiVersion: v1
kind: Pod
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{"networking.gke.io/default-interface":"eth0","networking.gke.io/interfaces":"[\n{\"interfaceName\":\"eth0\",\"network\":\"default\"},\n{\"interfaceName\":\"eth1\",\"network\":\"l3-network\"}\n]\n"},"name":"l3-pod","namespace":"default"},"spec":{"containers":[{"command":["sleep","10m"],"image":"busybox","name":"l3-pod","ports":[{"containerPort":80}]}],"restartPolicy":"Always"}}
networking.gke.io/default-interface: eth0
networking.gke.io/interfaces: |
[
{"interfaceName":"eth0","network":"default"},
{"interfaceName":"eth1","network":"l3-network"}
]
networking.gke.io/pod-ips: '[{"networkName":"l3-network","ip":"10.0.8.22"}]'
creationTimestamp: "2023-07-30T23:22:29Z"
name: l3-pod
namespace: default
resourceVersion: "1604447"
uid: 79a86afd-2a50-433d-9d48-367acb82c1d0
spec:
containers:
- command:
- sleep
- 10m
image: busybox
imagePullPolicy: Always
name: l3-pod
ports:
- containerPort: 80
protocol: TCP
resources:
limits:
networking.gke.io.networks/l3-network.IP: "1"
requests:
networking.gke.io.networks/l3-network.IP: "1"
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: kube-api-access-w9d24
readOnly: true
dnsPolicy: ClusterFirst
enableServiceLinks: true
nodeName: gke-multinic-gke-multinic-node-pool-135699a1-t66p
preemptionPolicy: PreemptLowerPriority
priority: 0
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccount: default
serviceAccountName: default
terminationGracePeriodSeconds: 30
tolerations:
- effect: NoExecute
key: node.kubernetes.io/not-ready
operator: Exists
tolerationSeconds: 300
- effect: NoExecute
key: node.kubernetes.io/unreachable
operator: Exists
tolerationSeconds: 300
- effect: NoSchedule
key: networking.gke.io.networks/l3-network.IP
operator: Exists
volumes:
- name: kube-api-access-w9d24
projected:
defaultMode: 420
sources:
- serviceAccountToken:
expirationSeconds: 3607
path: token
- configMap:
items:
- key: ca.crt
path: ca.crt
name: kube-root-ca.crt
- downwardAPI:
items:
- fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
path: namespace
status:
conditions:
- lastProbeTime: null
lastTransitionTime: "2023-07-30T23:22:29Z"
status: "True"
type: Initialized
- lastProbeTime: null
lastTransitionTime: "2023-07-30T23:22:35Z"
status: "True"
type: Ready
- lastProbeTime: null
lastTransitionTime: "2023-07-30T23:22:35Z"
status: "True"
type: ContainersReady
- lastProbeTime: null
lastTransitionTime: "2023-07-30T23:22:29Z"
status: "True"
type: PodScheduled
containerStatuses:
- containerID: containerd://1d5fe2854bba0a0d955c157a58bcfd4e34cecf8837edfd7df2760134f869e966
image: docker.io/library/busybox:latest
imageID: docker.io/library/busybox@sha256:3fbc632167424a6d997e74f52b878d7cc478225cffac6bc977eedfe51c7f4e79
lastState: {}
name: l3-pod
ready: true
restartCount: 0
started: true
state:
running:
startedAt: "2023-07-30T23:22:35Z"
hostIP: 192.168.0.5
phase: Running
podIP: 10.0.2.12
podIPs:
- ip: 10.0.2.12
qosClass: BestEffort
startTime: "2023-07-30T23:22:29Z"
Memvalidasi rute l3-pod
Di dalam Cloud Shell, validasi rute ke l3-vpc dari netdevice-l3-pod:
kubectl exec --stdin --tty l3-pod -- /bin/sh
Buat instance, validasi antarmuka pod:
ifconfig
Pada contoh tersebut, eth0 terhubung ke jaringan default, eth1 terhubung ke jaringan l3.
/ # ifconfig
eth0 Link encap:Ethernet HWaddr 22:29:30:09:6B:58
inet addr:10.0.2.12 Bcast:10.0.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1460 Metric:1
RX packets:5 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:446 (446.0 B) TX bytes:558 (558.0 B)
eth1 Link encap:Ethernet HWaddr 6E:6D:FC:C3:FF:AF
inet addr:10.0.8.22 Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST RUNNING MULTICAST MTU:1460 Metric:1
RX packets:5 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:446 (446.0 B) TX bytes:516 (516.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Dari l3-pod memvalidasi rute ke l3-vpc (172.16.20.0/28).
Buat instance, validasi rute pod:
ip route
Contoh:
/ # ip route
default via 10.0.2.1 dev eth0 #primary-vpc
10.0.2.0/24 via 10.0.2.1 dev eth0 src 10.0.2.12
10.0.2.1 dev eth0 scope link src 10.0.2.12
10.0.8.0/21 via 10.0.8.17 dev eth1 #l3-vpc (sec-range-l3-subnet)
10.0.8.17 dev eth1 scope link #pod interface subnet
172.16.20.0/28 via 10.0.8.17 dev eth1 #l3-vpc (l3-apache subnet)
Untuk kembali ke Cloud Shell, keluar dari pod dari instance.
exit
13. Update firewall
Diperlukan aturan firewall masuk netdevice-vpc dan l3-vpc untuk mengizinkan konektivitas dari GKE multicnic-pool. Anda akan membuat aturan firewall yang menentukan rentang sumber sebagai subnet jaringan pod, misalnya {i>netdevice-subnet<i}, {i>sec-range-l3-subnet<i}.
Sebagai contoh, kontainer yang baru dibuat, l3-pod, antarmuka eth2 10.0.8.22 (dialokasikan dari sec-range-l3-subnet) adalah alamat IP sumber saat terhubung ke instance l3-apache di l3-vpc.
netdevice-vpc: Izinkan dari netdevice-subnet ke netdevice-apache
Di dalam Cloud Shell, buat aturan firewall di netdevice-vpc yang memungkinkan akses netdevice-subnet ke instance netdevice-apache.
gcloud compute --project=$projectid firewall-rules create allow-ingress-from-netdevice-network-to-all-vpc-instances --direction=INGRESS --priority=1000 --network=netdevice-vpc --action=ALLOW --rules=all --source-ranges=192.168.10.0/24 --enable-logging
l3-vpc: Mengizinkan dari sec-range-l3-subnet ke l3-apache
Di dalam Cloud Shell, buat aturan firewall di l3-vpc yang memungkinkan akses sec-range-l3-subnet ke instance l3-apache.
gcloud compute --project=$projectid firewall-rules create allow-ingress-from-l3-network-to-all-vpc-instances --direction=INGRESS --priority=1000 --network=l3-vpc --action=ALLOW --rules=all --source-ranges=10.0.8.0/21 --enable-logging
14. Memvalidasi konektivitas pod
Di bagian berikut, Anda akan memverifikasi konektivitas ke instance Apache dari netdevice-l3-pod dan l3-pod dengan login ke pod dan menjalankan wget -S yang memvalidasi download dari halaman beranda server apache. Karena netdevice-l3-pod dikonfigurasi dengan antarmuka dari jaringan netdevice-dan l3-jaringan, konektivitas ke server Apache di netdevice-vpc dan l3-vpc dimungkinkan.
Sebaliknya, saat melakukan wget -S dari l3-pod, konektivitas ke server Apache di netdevice-vpc tidak mungkin dilakukan karena l3-pod hanya dikonfigurasi dengan antarmuka dari jaringan l3.
Mendapatkan Alamat IP Server Apache
Dari Cloud Console, dapatkan alamat IP server Apache dengan membuka Compute Engine → VM instances
uji konektivitas netdevice-l3-pod ke netdevice-apache
Di dalam Cloud Shell, login ke netdevice-l3-pod:
kubectl exec --stdin --tty netdevice-l3-pod -- /bin/sh
Dari container, lakukan ping ke instance netdevice-apache berdasarkan alamat IP yang diperoleh dari langkah sebelumnya.
ping <insert-your-ip> -c 4
Contoh:
/ # ping 172.16.10.2 -c 4
PING 172.16.10.2 (172.16.10.2): 56 data bytes
64 bytes from 172.16.10.2: seq=0 ttl=64 time=1.952 ms
64 bytes from 172.16.10.2: seq=1 ttl=64 time=0.471 ms
64 bytes from 172.16.10.2: seq=2 ttl=64 time=0.446 ms
64 bytes from 172.16.10.2: seq=3 ttl=64 time=0.505 ms
--- 172.16.10.2 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.446/0.843/1.952 ms
/ #
Di dalam Cloud Shell, jalankan wget -S ke instance netdevice-apache berdasarkan alamat IP yang diperoleh dari langkah sebelumnya, 200 OK menunjukkan download halaman yang berhasil.
wget -S <insert-your-ip>
Contoh:
/ # wget -S 172.16.10.2
Connecting to 172.16.10.2 (172.16.10.2:80)
HTTP/1.1 200 OK
Date: Mon, 31 Jul 2023 03:12:58 GMT
Server: Apache/2.4.56 (Debian)
Last-Modified: Sat, 29 Jul 2023 00:32:44 GMT
ETag: "2c-6019555f54266"
Accept-Ranges: bytes
Content-Length: 44
Connection: close
Content-Type: text/html
saving to 'index.html'
index.html 100% |********************************| 44 0:00:00 ETA
'index.html' saved
/ #
uji konektivitas netdevice-l3-pod ke l3-apache
Di dalam Cloud Shell, lakukan ping ke instance l3-apache berdasarkan alamat IP yang diperoleh dari langkah sebelumnya.
ping <insert-your-ip> -c 4
Contoh:
/ # ping 172.16.20.3 -c 4
PING 172.16.20.3 (172.16.20.3): 56 data bytes
64 bytes from 172.16.20.3: seq=0 ttl=63 time=2.059 ms
64 bytes from 172.16.20.3: seq=1 ttl=63 time=0.533 ms
64 bytes from 172.16.20.3: seq=2 ttl=63 time=0.485 ms
64 bytes from 172.16.20.3: seq=3 ttl=63 time=0.462 ms
--- 172.16.20.3 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.462/0.884/2.059 ms
/ #
Di dalam Cloud Shell, hapus file index.html sebelumnya dan jalankan instance wget -S to l3-apache berdasarkan alamat IP yang diperoleh dari langkah sebelumnya, 200 OK menunjukkan download halaman yang berhasil.
rm index.html
wget -S <insert-your-ip>
Contoh:
/ # rm index.html
/ # wget -S 172.16.20.3
Connecting to 172.16.20.3 (172.16.20.3:80)
HTTP/1.1 200 OK
Date: Mon, 31 Jul 2023 03:41:32 GMT
Server: Apache/2.4.56 (Debian)
Last-Modified: Mon, 31 Jul 2023 03:24:21 GMT
ETag: "25-601bff76f04b7"
Accept-Ranges: bytes
Content-Length: 37
Connection: close
Content-Type: text/html
saving to 'index.html'
index.html 100% |*******************************************************************************************************| 37 0:00:00 ETA
'index.html' saved
Untuk kembali ke Cloud Shell, keluar dari pod dari instance.
exit
Uji konektivitas l3-pod ke netdevice-apache
Di dalam Cloud Shell, login ke l3-pod:
kubectl exec --stdin --tty l3-pod -- /bin/sh
Dari container, lakukan ping ke instance netdevice-apache berdasarkan alamat IP yang diperoleh dari langkah sebelumnya. Karena l3-pod tidak memiliki antarmuka yang terkait dengan netdevice-network, ping akan gagal.
ping <insert-your-ip> -c 4
Contoh:
/ # ping 172.16.10.2 -c 4
PING 172.16.10.2 (172.16.10.2): 56 data bytes
--- 172.16.10.2 ping statistics ---
4 packets transmitted, 0 packets received, 100% packet loss
Opsional: Di dalam Cloud Shell, jalankan instance wget -S ke netdevice-apache berdasarkan alamat IP yang diperoleh dari langkah sebelumnya yang akan habis waktu tunggunya.
wget -S <insert-your-ip>
Contoh:
/ # wget -S 172.16.10.2
Connecting to 172.16.10.2 (172.16.10.2:80)
wget: can't connect to remote host (172.16.10.2): Connection timed out
Uji konektivitas l3-pod ke l3-apache
Di dalam Cloud Shell, lakukan ping ke instance l3-apache berdasarkan alamat IP yang diperoleh dari langkah sebelumnya.
ping <insert-your-ip> -c 4
Contoh:
/ # ping 172.16.20.3 -c 4
PING 172.16.20.3 (172.16.20.3): 56 data bytes
64 bytes from 172.16.20.3: seq=0 ttl=63 time=1.824 ms
64 bytes from 172.16.20.3: seq=1 ttl=63 time=0.513 ms
64 bytes from 172.16.20.3: seq=2 ttl=63 time=0.482 ms
64 bytes from 172.16.20.3: seq=3 ttl=63 time=0.532 ms
--- 172.16.20.3 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.482/0.837/1.824 ms
/ #
Di dalam Cloud Shell, jalankan instance wget -S to l3-apache berdasarkan alamat IP yang diperoleh dari langkah sebelumnya, 200 OK menunjukkan download halaman yang berhasil.
wget -S <insert-your-ip>
Contoh:
/ # wget -S 172.16.20.3
Connecting to 172.16.20.3 (172.16.20.3:80)
HTTP/1.1 200 OK
Date: Mon, 31 Jul 2023 03:52:08 GMT
Server: Apache/2.4.56 (Debian)
Last-Modified: Mon, 31 Jul 2023 03:24:21 GMT
ETag: "25-601bff76f04b7"
Accept-Ranges: bytes
Content-Length: 37
Connection: close
Content-Type: text/html
saving to 'index.html'
index.html 100% |*******************************************************************************************************| 37 0:00:00 ETA
'index.html' saved
/ #
15. Log firewall
Firewall Rules Logging memungkinkan Anda mengaudit, memverifikasi, dan menganalisis efek aturan firewall Anda. Misalnya, Anda dapat menentukan apakah aturan firewall yang didesain untuk menolak traffic berfungsi sebagaimana mestinya. Firewall Rules Logging juga berguna jika Anda perlu menentukan jumlah koneksi yang terpengaruh oleh aturan firewall tertentu.
Dalam tutorial ini, Anda telah mengaktifkan logging firewall saat membuat aturan firewall masuk. Mari kita lihat informasi yang diperoleh dari log.
Dari Konsol Cloud, buka Logging → Logs Explorer
Masukkan kueri di bawah ini sesuai screenshot dan pilih Run query jsonPayload.rule_details.reference:("network:l3-vpc/firewall:allow-ingress-from-l3-network-to-all-vpc-instances")
Melihat lebih dekat pada tangkapan layar memberikan elemen informasi untuk administrator keamanan; mulai dari Alamat IP sumber dan tujuan, porta, protokol, dan nama node pool.
Untuk mempelajari log firewall lebih lanjut, buka Jaringan VPC → Firewall → allow-ingress-from-netdevice-network-to-all-vpc-instances, lalu pilih lihat di Logs Explorer.
16. Pembersihan
Dari Cloud Shell, hapus komponen tutorial.
gcloud compute instances delete l3-apache netdevice-apache --zone=us-central1-a --quiet
gcloud compute routers delete l3-cr netdevice-cr --region=us-central1 --quiet
gcloud container clusters delete multinic-gke --zone=us-central1-a --quiet
gcloud compute firewall-rules delete allow-ingress-from-l3-network-to-all-vpc-instances allow-ingress-from-netdevice-network-to-all-vpc-instances --quiet
gcloud compute networks subnets delete l3-apache l3-subnet netdevice-apache netdevice-subnet primary-node-subnet --region=us-central1 --quiet
gcloud compute networks delete l3-vpc netdevice-vpc primary-vpc --quiet
17. Selamat
Selamat, Anda telah berhasil mengonfigurasi dan memvalidasi pembuatan node pool multinic dan membuat pod yang menjalankan sibukbox untuk memvalidasi konektivitas L3 dan Jenis perangkat ke server Apache menggunakan PING dan wget.
Anda juga telah mempelajari cara memanfaatkan log firewall untuk memeriksa paket sumber dan tujuan antara container Pod dan server Apache.
Cosmopup menganggap tutorialnya luar biasa!!