GKE NodeLocal DNSCache এক্সপ্লোর করুন

১. সংক্ষিপ্ত বিবরণ

DNS ক্যাশে পড DNS অনুরোধগুলিকে প্রথমে একই নোডের স্থানীয় ক্যাশে পাঠানোর মাধ্যমে DNS লুকআপ লেটেন্সি উন্নত করে। এটি DNS লুকআপের সময়কে আরও সামঞ্জস্যপূর্ণ করে তোলে এবং kube-dns বা Cloud DNS-এ DNS কোয়েরির সংখ্যা কমাতে পারে।

এই ল্যাবে, আপনি পরীক্ষা করে দেখবেন একটি GKE ক্লাস্টারে NodeLocal DNSCache কিভাবে DNS ট্র্যাফিক পরিচালনা করে। এটি ডিফল্টরূপে সক্রিয় আছে কিনা তা নিশ্চিত করতে, আপনি 1.34.1-gke.3720000 এবং তার পরবর্তী সংস্করণে চালিত একটি GKE Standard ক্লাস্টার যাচাই করবেন। এরপর, ফিচারটি বন্ধ করলে কনফিগারেশনে কী পরিবর্তন আসে তা দেখতে এটিকে নিষ্ক্রিয় করবেন।

উদ্দেশ্য

এই ল্যাবে তোমরা নিম্নলিখিত কাজটি কীভাবে সম্পাদন করতে হয় তা শিখবে:

  • একটি কাস্টম ভিপিসি, সাবনেট এবং ফায়ারওয়াল নিয়ম তৈরি করুন
  • র‍্যাপিড-রিলিজ চ্যানেল সহ একটি স্ট্যান্ডার্ড GKE স্ট্যান্ডার্ড ক্লাস্টার স্থাপন করুন।
  • LocalNode DNS ক্যাশে সক্রিয় আছে কিনা তা যাচাই করতে একটি পরীক্ষা চালান।
  • ক্যাশে নিষ্ক্রিয় করুন এবং এটি ছাড়া অবস্থা যাচাই করুন।

২. ল্যাব সেটআপ

স্ব-গতিতে পরিবেশ সেটআপ

  1. Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
  • প্রজেক্ট আইডি সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (একবার সেট করার পর এটি পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রজেক্ট আইডি উল্লেখ করতে হবে (যা সাধারণত PROJECT_ID হিসাবে চিহ্নিত করা হয়)। তৈরি করা আইডিটি আপনার পছন্দ না হলে, আপনি এলোমেলোভাবে আরেকটি তৈরি করতে পারেন। বিকল্পভাবে, আপনি আপনার নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রজেক্টের পুরো সময়কাল জুড়ে এটি অপরিবর্তিত থাকবে।
  • আপনার অবগতির জন্য জানানো যাচ্ছে যে, তৃতীয় একটি ভ্যালু রয়েছে, যা হলো প্রজেক্ট নম্বর , এবং কিছু এপিআই এটি ব্যবহার করে থাকে। ডকুমেন্টেশনে এই তিনটি ভ্যালু সম্পর্কে আরও বিস্তারিত জানুন।
  1. এরপর, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হবে না, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর বিলিং এড়াতে রিসোর্সগুলো বন্ধ করার জন্য, আপনি আপনার তৈরি করা রিসোর্সগুলো অথবা প্রজেক্টটি ডিলিট করে দিতে পারেন। নতুন গুগল ক্লাউড ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

ক্লাউড শেল শুরু করুন

যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চলমান একটি কমান্ড লাইন পরিবেশ।

গুগল ক্লাউড কনসোল থেকে, উপরের ডানদিকের টুলবারে থাকা ক্লাউড শেল আইকনটিতে ক্লিক করুন:

ক্লাউড শেল সক্রিয় করুন

পরিবেশটি প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগবে। এটি শেষ হলে, আপনি এইরকম কিছু দেখতে পাবেন:

গুগল ক্লাউড শেল টার্মিনালের স্ক্রিনশট, যা দেখাচ্ছে যে পরিবেশটি সংযুক্ত হয়েছে।

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার সমস্ত কাজ একটি ব্রাউজারের মধ্যেই করা যাবে। আপনাকে কিছুই ইনস্টল করতে হবে না।

৩. পরিবেশ স্থাপন

আমরা ফায়ারওয়াল নিয়ম সহ একটি কাস্টম ভিপিসি তৈরি করব। যদি আপনার আগে থেকেই ভিপিসি এবং প্রজেক্ট থাকে, তবে আপনি এই অংশটি বাদ দিতে পারেন।

আপনার কনসোলের উপরে ডানদিকে অবস্থিত ক্লাউড শেল খুলুন। এবং নিম্নরূপভাবে কনফিগার করুন: b51b80043d3bac90.png

  1. এই ল্যাবে আমরা যে এপিআইগুলো ব্যবহার করব তার কয়েকটি সক্রিয় করুন।
gcloud services enable dns.googleapis.com
gcloud services enable servicedirectory.googleapis.com
gcloud services enable container.googleapis.com
  1. কিছু ভেরিয়েবল সেট করুন। এই ভেরিয়েবলগুলো হলো প্রজেক্ট আইডি এবং ভিপিসি-র নাম (আপনি ধাপ ৩-এ ভিপিসি তৈরি করবেন)।
export projectid=$(gcloud config get-value project)
export vpc_name=gke-cache-vpc
export subnet_name=mainsubnet
export region=us-east1
export zone=us-east1-b
export cluster_name=cache-gke-cluster
export channel=rapid

export machine_type=e2-standard-4
echo $projectid
echo $vpc_name
  1. এখন gke-cache-vpc নামে একটি কাস্টম VPC তৈরি করুন।
gcloud compute networks create $vpc_name --subnet-mode=custom --project=$projectid \
--subnet-mode=custom \
--mtu=1460 \
--bgp-routing-mode=global
  1. নতুন VPC-তে সাবনেটটি তৈরি করুন।
gcloud compute networks subnets create $subnet_name \
    --network=$vpc_name \
    --range=10.0.88.0/24 \
    --region=$region \
    --enable-private-ip-google-access \
    --project=$projectid
  1. আপনার VPC-তে ফায়ারওয়াল নিয়ম যোগ করুন
gcloud compute firewall-rules create $vpc_name-allow-internal \
    --network=$vpc_name --allow=tcp,udp,icmp --source-ranges=10.0.88.0/24

gcloud compute firewall-rules create $vpc_name-allow-ssh \
    --network=$vpc_name --allow=tcp:22 --source-ranges=35.235.240.0/20

৪. ইন্টারনেট যোগাযোগের জন্য NAT গেটওয়ে তৈরি করুন।

আমাদের ইন্টারনেটে বহির্গামী বাহ্যিক অ্যাক্সেস মঞ্জুর করতে হবে, তাই চলুন একটি ক্লাউড ন্যাট গেটওয়ে তৈরি করে সংযুক্ত করি।

ক্লাউড শেলে নিম্নলিখিত কমান্ডগুলি ব্যবহার করুন

  1. ক্লাউড NAT এবং NAT গেটওয়ে তৈরি করুন
gcloud compute routers create gke-nat-router --network=$vpc_name --region=$region

gcloud compute routers nats create gke-nat-gw \
    --router=gke-nat-router --region=$region \
    --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges

৫. GKE ক্লাস্টার স্থাপন করুন এবং যাচাই করুন

  1. Google Cloud Shell-এ cache-gke-cluster নামের ক্লাস্টারটি তৈরি করুন। GKE Standard ক্লাস্টার যা সংস্করণ 1.34.1-gke.3720000 এবং তার পরবর্তী সংস্করণে চলছে, সেগুলিতে NodeLocal DNSCache ডিফল্টরূপে সক্রিয় থাকে। ( ক্লাস্টারটি প্রোভিশন হতে ৪ থেকে ১০ মিনিট সময় লাগতে পারে )
gcloud container clusters create $cluster_name \
--zone=$zone --network=$vpc_name --subnetwork=$subnet_name \
--release-channel=$channel --machine-type=$machine_type \
--enable-ip-alias
  1. আপনার ক্লাস্টার তৈরি হয়ে গেলে সংযোগ করুন:
gcloud container clusters get-credentials $cluster_name --zone $zone
  1. এখন চলুন যাচাই করে দেখি NodeLocal DNSCache সক্রিয় আছে কিনা।

এই কমান্ডগুলো নিশ্চিত করে যে সংস্করণটি 1.34.1-gke.3720000 বা তার পরবর্তী এবং স্থানীয় এজেন্ট ও পরিষেবাগুলো চালু আছে।

kubectl version | grep "Server Version"

kubectl get pods -n kube-system -o wide | grep node-local-dns -w

kubectl get svc,endpoints -n kube-system -l k8s-app=kube-dns
  1. এরপর নিম্নলিখিতটি চালান ( এটি হোস্ট নেটওয়ার্কে একটি প্রিভিলেজড পড তৈরি করে, যা যাচাই করে যে নোডের iptables নিয়মগুলি সক্রিয়ভাবে DNS ট্র্যাফিককে ইন্টারসেপ্ট ও লোকাল ক্যাশে রাউট করছে )।
export KUBEDNS_IP=$(kubectl get svc kube-dns -n kube-system -o jsonpath='{.spec.clusterIP}')

kubectl run node-inspector --quiet --rm -it --image=alpine --privileged --restart=Never \
  --overrides='{"spec": {"hostNetwork": true}}' -- \
  sh -c "apk add --no-cache iptables && iptables-save | grep -E '169.254.20.10|$KUBEDNS_IP'"

কী দেখবেন: -j NOTRACK. এটি নিশ্চিত করে যে DNS ট্র্যাফিক কানেকশন ট্র্যাকিং টেবিলকে বাইপাস করছে।

7135447929b7c48f.png

৬. নোডলোকাল ডিএনএসক্যাশ নিষ্ক্রিয় করুন এবং যাচাই করুন

এবার আমরা অপটিমাইজেশনটি সরিয়ে দেবো, যাতে দেখা যায় এটি ছাড়া কেমন কাজ করে।

  1. ক্লাউড শেলে যান এবং নিম্নলিখিতটি চালান। দ্রষ্টব্য: এটি একটি নোড পুনঃসৃষ্টি শুরু করবে, যা সাধারণত প্রতিটি নোড পুলের জন্য ৩-৫ মিনিট সময় নেয়, কারণ GKE ইনস্ট্যান্সগুলোকে চক্রাকারে চালু করে।
gcloud container clusters update $cluster_name --zone=$zone --update-addons=NodeLocalDNS=DISABLED --quiet

kubectl get pods -n kube-system -o wide | grep node-local-dns -w

যেহেতু এই পডগুলো সরিয়ে ফেলা হয়েছে, তাই ডেমন সেটে আপনি এগুলোর কোনোটিই দেখতে পাবেন না।

  1. পুনরায় পরীক্ষা চালান
kubectl run node-inspector --quiet --rm -it --image=alpine --privileged --restart=Never \
  --overrides='{"spec": {"hostNetwork": true}}' -- \
  sh -c "apk add --no-cache iptables && iptables-save | grep -E '169.254.20.10|$KUBEDNS_IP'"

অ্যাড-অনটি নিষ্ক্রিয় করার পর, আউটপুটে আর -j NOTRACK নিয়মগুলো বা 169.254.20.10 আইপি ঠিকানার কোনো উল্লেখ থাকবে না। এর মানে হলো, আপনি আর লোকাল ক্যাশের সুবিধাগুলো পাচ্ছেন না।

4693ee556701e145.png

৭. পরিষ্কার করুন

# 1. Delete the GKE Cluster
# This will remove the node and all system pods (including kube-dns)
gcloud container clusters delete $cluster_name --zone=$zone --quiet

# 2. Delete the Cloud NAT and Router
# It is best practice to remove these before the VPC
gcloud compute routers nats delete gke-nat-gw --router=gke-nat-router --region=$region --quiet
gcloud compute routers delete gke-nat-router --region=$region --quiet

# 3. Delete the Firewall Rules
gcloud compute firewall-rules delete $vpc_name-allow-internal $vpc_name-allow-ssh --quiet

# 4. Delete the Subnet and VPC
gcloud compute networks subnets delete $subnet_name --region=$region --quiet
gcloud compute networks delete $vpc_name --quiet

৮. পরবর্তী পদক্ষেপ / আরও জানুন

আপনি GKE নেটওয়ার্কিং ডকুমেন্টেশন এবং এর ব্যবহার সম্পর্কে আরও পড়তে পারেন।

কোডল্যাব : প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্টের মাধ্যমে পাইথন এসডিকে ব্যবহার করে জেমিনি ৩ প্রো চ্যাট অ্যাক্সেস করুন

কোডল্যাব : ADK:The Foundation ব্যবহার করে এআই এজেন্ট তৈরি করা

আপনার পরবর্তী ল্যাব নিন

Google Cloud-এর সাথে আপনার অনুসন্ধান চালিয়ে যান, এবং Google Cloud Skills Boost-এর এই অন্যান্য ল্যাবগুলোও দেখে নিন: