በ etcd Kubernetes ክላስተር ውስጥ ያለን መረጃ በቀጥታ (ያለ K8s API)

ከጊዜ ወደ ጊዜ ደንበኞች በክላስተር ውስጥ አገልግሎቶችን ማግኘት እንዲችሉ የኩበርኔትስ ክላስተር መዳረሻ እንድንሰጥ ጥያቄ በማቅረብ ወደ እኛ እየዞሩ ነው፡ እርስዎ በቀጥታ ከመረጃ ቋት ወይም አገልግሎት ጋር እንዲገናኙ፣ አካባቢያዊ መተግበሪያን በ ውስጥ ካሉ መተግበሪያዎች ጋር ለማገናኘት ክላስተር...

በ etcd Kubernetes ክላስተር ውስጥ ያለን መረጃ በቀጥታ (ያለ K8s API)

ለምሳሌ፣ ከአከባቢዎ ማሽን ወደ አገልግሎቱ ማገናኘት ያስፈልጋል memcached.staging.svc.cluster.local. ይህንን ደንበኛው በተገናኘበት ክላስተር ውስጥ ከ VPN ጋር እናቀርባለን። ይህንን ለማድረግ የ pods፣ አገልግሎቶች እና ክላስተር ዲ ኤን ኤስን ለደንበኛው የምንገፋው ንዑስ መረቦችን እናሳውቃለን። ስለዚህ, ደንበኛው ከአገልግሎቱ ጋር ለመገናኘት ሲሞክር memcached.staging.svc.cluster.local, ጥያቄው ወደ ክላስተር ዲ ኤን ኤስ ይሄዳል እና በምላሹም የዚህን አገልግሎት አድራሻ ከክላስተር አገልግሎት አውታር ወይም ከፖድ አድራሻ ይቀበላል.

ነባሪ የአገልግሎት ሳብኔት ባለበት kubeadm በመጠቀም የK8s ስብስቦችን እናዋቅራለን 192.168.0.0/16, እና ፖድ አውታር ነው 10.244.0.0/16. ብዙውን ጊዜ ሁሉም ነገር በትክክል ይሰራል, ግን ሁለት ነጥቦች አሉ.

  • ንዑስ መረብ 192.168.*.* ብዙውን ጊዜ በደንበኛ ቢሮ አውታረ መረቦች ውስጥ እና እንዲያውም ብዙ ጊዜ በገንቢዎች የቤት አውታረ መረቦች ውስጥ ጥቅም ላይ ይውላል። እና ከዚያ ግጭቶችን እናገኛለን: የቤት ራውተሮች በዚህ ሳብኔት ውስጥ ይሰራሉ ​​እና VPN እነዚህን ንዑስ አውታረ መረቦች ከጥቅሉ ወደ ደንበኛው ይገፋፋቸዋል.
  • ብዙ ዘለላዎች አሉን (የምርት ስብስቦች፣ ደረጃ ዘለላዎች እና/ወይም በርካታ ዴቭ ክላስተር)። ከዚያ በነባሪነት ሁሉም ለፓድ እና አገልግሎቶች ተመሳሳይ ንዑስ አውታረ መረቦች ይኖራቸዋል ፣ ይህም በብዙ ዘለላዎች ውስጥ ካሉ አገልግሎቶች ጋር በአንድ ጊዜ ለመስራት ትልቅ ችግር ይፈጥራል።

በአንድ ፕሮጀክት ውስጥ የተለያዩ ንዑስ መረቦችን ለአገልግሎቶች እና ፖድዎች የመጠቀም ልምድን ለረጅም ጊዜ ወስደናል - በአጠቃላይ ሁሉም ስብስቦች ከተለያዩ አውታረ መረቦች ጋር እንዲሆኑ። ነገር ግን፣ ብዙ አገልግሎቶች፣ መንግስታዊ አፕሊኬሽኖች፣ ወዘተ እየሰሩ ስለሆኑ ከባዶ መዞር የማንፈልገው ብዙ ቁጥር ያላቸው ዘለላዎች በስራ ላይ አሉ።

እና ከዚያ እራሳችንን ጠየቅን-በነባር ክላስተር ውስጥ ንዑስ አውታረ መረብን እንዴት መለወጥ እንደሚቻል?

ውሳኔዎችን መፈለግ

በጣም የተለመደው ልምምድ እንደገና መፍጠር ነው ሁሉም ዓይነት ክላስተርአይፒ ያላቸው አገልግሎቶች። እንደ አማራጭ፣ ምክር መስጠት ይችላል እና ይህ፡-

የሚከተለው ሂደት ችግር አለበት፡ ሁሉም ነገር ከተዋቀረ በኋላ ፖድቹ ከድሮው አይፒ ጋር እንደ ዲ ኤን ኤስ ስም አገልጋይ በ /etc/resolv.conf ይመጣሉ።
አሁንም መፍትሄውን ስላላገኘሁ ክላስተርን በ kubeadm ዳግም ማስጀመር እና እንደገና ማስገባት ነበረብኝ።

ግን ይህ ለሁሉም ሰው ተስማሚ አይደለም ... ለጉዳያችን የበለጠ ዝርዝር መግቢያ እዚህ አሉ-

  • በ Flannel ጥቅም ላይ የዋለ;
  • በደመና ውስጥ እና በሃርድዌር ላይ ሁለቱም ስብስቦች አሉ;
  • ሁሉንም አገልግሎቶች በክላስተር ውስጥ እንደገና ማሰማራትን ማስወገድ እፈልጋለሁ;
  • በአጠቃላይ በትንሹ የችግሮች ብዛት ሁሉንም ነገር ማድረግ ያስፈልጋል;
  • Kubernetes ስሪት - 1.16.6 (ይሁን እንጂ, ተጨማሪ እርምጃዎች ለሌሎች ስሪቶች ተመሳሳይ ይሆናል);
  • ዋናው ተግባር kubeadm ን ከአገልግሎት ሳብኔት ጋር በመጠቀም በተዘረጋ ክላስተር ውስጥ መሆኑን ማረጋገጥ ነው። 192.168.0.0/16, በ ይተኩ 172.24.0.0/16.

እና ልክ እንደዚህ ሆነ እኛ በኩበርኔትስ ውስጥ በ etcd ውስጥ ምን እና እንዴት እንደሚከማች ፣ በአጠቃላይ ምን ሊደረግ እንደሚችል ለማየት ለረጅም ጊዜ ፍላጎት ነበረን… ስለዚህ እኛ አሰብን-“ለምን የድሮውን የአይፒ አድራሻዎች (ንዑስ መረብ) በአዲሶቹ በመተካት በ etcd ውስጥ ያለውን መረጃ ብቻ አታዘምንም።? "

በ etcd ውስጥ ከመረጃ ጋር ለመስራት ዝግጁ የሆኑ መሳሪያዎችን በመፈለግ ስራውን ሙሉ በሙሉ የሚፈታ ምንም ነገር አላገኘንም። (በነገራችን ላይ በ etcd ውስጥ በቀጥታ ከውሂብ ጋር ለመስራት ማናቸውንም መገልገያዎች ካወቁ - ለግንኙነቶቹ አመስጋኞች እንሆናለን።) ሆኖም ጥሩ መነሻ ነበር። ወዘተ ረዳት በOpenShift (ለደራሲዎቹ ምስጋና ይግባው!).

ይህ መገልገያ የምስክር ወረቀቶችን በመጠቀም ከ etcd ጋር መገናኘት እና ትዕዛዞችን በመጠቀም ውሂብ ማንበብ ይችላል። ls, get, dump.

ወዘተ ረዳት ያክሉ

የሚቀጥለው ሀሳብ ተፈጥሯዊ ነው፡ “መረጃን ወደ ወዘተ የመፃፍ ችሎታ በመጨመር ይህንን መገልገያ እንዳትጨምሩ የሚከለክላችሁ ምንድን ነው?”

ከሁለት አዳዲስ ባህሪያት ጋር የተሻሻለ የ etcdhelper ስሪት ሆነ changeServiceCIDR и changePodCIDR. በእሷ ላይ ኮድ ሊታይ ይችላል እዚህ.

አዲሶቹ ባህሪያት ምን ያደርጋሉ? አልጎሪዝም changeServiceCIDR:

  • አንድ deserializer መፍጠር;
  • ሲዲአርን ለመተካት መደበኛ አገላለጽ ማጠናቀር;
  • በክላስተር ውስጥ ባለው የClusterIP አይነት ሁሉንም አገልግሎቶች እናልፋለን፡-
    • እሴቱን ከ etcd ወደ Go ነገር መፍታት;
    • በመደበኛ አገላለጽ በመጠቀም የአድራሻውን የመጀመሪያዎቹን ሁለት ባይት እንተካለን;
    • አገልግሎቱን ከአዲሱ ንኡስ መረብ የአይፒ አድራሻ መድብ;
    • ተከታታይ ይፍጠሩ፣ የ Go ነገርን ወደ ፕሮቶቡፍ ይለውጡ፣ አዲስ ውሂብ ወደ ወዘተ ይጻፉ።

ሥራ changePodCIDR በመሠረቱ ተመሳሳይ changeServiceCIDR - የአገልግሎት ዝርዝር መግለጫውን ከማርትዕ ይልቅ ብቻ ለኖድ እና ለለውጥ እናደርጋለን .spec.PodCIDR ወደ አዲሱ ንዑስ መረብ.

ልምምድ

አገልግሎት ሲዲአር ይቀይሩ

የተግባር ትግበራ እቅድ በጣም ቀላል ነው, ነገር ግን በክላስተር ውስጥ ያሉ ሁሉም እንክብሎች እንደገና በሚፈጠሩበት ጊዜ የመቀነስ ጊዜን ያመለክታል. መሰረታዊ እርምጃዎችን ከገለጽን በኋላ፣ ይህ የእረፍት ጊዜ በንድፈ ሀሳብ እንዴት መቀነስ እንደሚቻል ላይ ሃሳቦችን እናካፍላለን።

የዝግጅት ደረጃዎች፡-

  • አስፈላጊውን ሶፍትዌር መጫን እና የተለጠፈውን ወዘተ.
  • ወዘተ ምትኬ እና /etc/kubernetes.

የአገልግሎት ሲዲአርን ለመቀየር አጭር የድርጊት መርሃ ግብር፡-

  • የ apiserver እና የመቆጣጠሪያ-አስተዳዳሪ መገለጫዎችን መለወጥ;
  • የምስክር ወረቀቶችን እንደገና መስጠት;
  • በ etcd ውስጥ የአገልግሎት ClusterIP መለወጥ;
  • በክላስተር ውስጥ ያሉትን ሁሉንም እንክብሎች እንደገና ያስጀምሩ።

የሚከተለው ዝርዝር ድርጊቶች ሙሉ ቅደም ተከተል ነው.

1. ለውሂብ መጣያ ወዘተ ወዘተ ደንበኛን ይጫኑ፡-

apt install etcd-client

2. ወዘተ ረዳት እንሰበስባለን፡-

  • ጎላንግ ጫን
    GOPATH=/root/golang
    mkdir -p $GOPATH/local
    curl -sSL https://dl.google.com/go/go1.14.1.linux-amd64.tar.gz | tar -xzvC $GOPATH/local
    echo "export GOPATH="$GOPATH"" >> ~/.bashrc
    echo 'export GOROOT="$GOPATH/local/go"' >> ~/.bashrc
    echo 'export PATH="$PATH:$GOPATH/local/go/bin"' >> ~/.bashrc
  • ራሳችንን እናድናለን። etcdhelper.goጥገኞችን አውርድ፣ ገንባ፡
    wget https://raw.githubusercontent.com/flant/examples/master/2020/04-etcdhelper/etcdhelper.go
    go get go.etcd.io/etcd/clientv3 k8s.io/kubectl/pkg/scheme k8s.io/apimachinery/pkg/runtime
    go build -o etcdhelper etcdhelper.go

3. ምትኬ ወዘተ ያድርጉ፡

backup_dir=/root/backup
mkdir ${backup_dir}
cp -rL /etc/kubernetes ${backup_dir}
ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --key=/etc/kubernetes/pki/etcd/server.key --cert=/etc/kubernetes/pki/etcd/server.crt --endpoints https://192.168.199.100:2379 snapshot save ${backup_dir}/etcd.snapshot

4. በ Kubernetes መቆጣጠሪያ አውሮፕላን ውስጥ ያለውን የአገልግሎት ንኡስ መረብ ይቀይሩ. በፋይሎች ውስጥ /etc/kubernetes/manifests/kube-apiserver.yaml и /etc/kubernetes/manifests/kube-controller-manager.yaml መለኪያውን ይቀይሩ --service-cluster-ip-range ወደ አዲሱ ሳብኔት፡- 172.24.0.0/16192.168.0.0/16.

5. kubeadm ለ apiserver (ጨምሮ) ሰርተፍኬት የሚሰጥበትን የአገልግሎት ንኡስ መረብ እየቀየርን ስለሆነ እንደገና መሰጠት አለባቸው፡-

  1. የአሁኑ የምስክር ወረቀት ለየትኞቹ ጎራዎች እና አይፒ አድራሻዎች እንይ፡-
    openssl x509 -noout -ext subjectAltName </etc/kubernetes/pki/apiserver.crt
    X509v3 Subject Alternative Name:
        DNS:dev-1-master, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster.local, DNS:apiserver, IP Address:192.168.0.1, IP Address:10.0.0.163, IP Address:192.168.199.100
  2. ለ kubeadm አነስተኛ ውቅር እናዘጋጅ፡-
    cat kubeadm-config.yaml
    apiVersion: kubeadm.k8s.io/v1beta1
    kind: ClusterConfiguration
    networking:
      podSubnet: "10.244.0.0/16"
      serviceSubnet: "172.24.0.0/16"
    apiServer:
      certSANs:
      - "192.168.199.100" # IP-адрес мастер узла
  3. የድሮውን crt እና ቁልፍ እንሰርዝ፣ ምክንያቱም ያለዚህ አዲሱ የምስክር ወረቀት አይሰጥም፡-
    rm /etc/kubernetes/pki/apiserver.{key,crt}
  4. ለኤፒአይ አገልጋይ ሰርተፊኬቶችን እንደገና እንስራ፡
    kubeadm init phase certs apiserver --config=kubeadm-config.yaml
  5. የምስክር ወረቀቱ ለአዲሱ ሳብኔት መሰጠቱን ያረጋግጡ፡-
    openssl x509 -noout -ext subjectAltName </etc/kubernetes/pki/apiserver.crt
    X509v3 Subject Alternative Name:
        DNS:kube-2-master, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster.local, IP Address:172.24.0.1, IP Address:10.0.0.163, IP Address:192.168.199.100
  6. የኤፒአይ አገልጋይ ሰርተፍኬትን እንደገና ከለቀቀ በኋላ መያዣውን እንደገና ያስጀምሩ፡-
    docker ps | grep k8s_kube-apiserver | awk '{print $1}' | xargs docker restart
  7. አወቃቀሩን እንደገና ያድሱ admin.conf:
    kubeadm alpha certs renew admin.conf
  8. በ etcd ውስጥ ውሂቡን እናርትዕ፡-
    ./etcdhelper -cacert /etc/kubernetes/pki/etcd/ca.crt -cert /etc/kubernetes/pki/etcd/server.crt -key /etc/kubernetes/pki/etcd/server.key -endpoint https://127.0.0.1:2379 change-service-cidr 172.24.0.0/16 

    እባክዎ ልብ ይበሉ! በዚህ ጊዜ፣ ጎራ መፍታት በክላስተር ውስጥ መሥራት ያቆማል፣ ምክንያቱም አሁን ባለው ፖድ ውስጥ /etc/resolv.conf የድሮው CoreDNS አድራሻ (kube-dns) ተመዝግቧል፣ እና kube-proxy የ iptables ደንቦችን ከአሮጌው ሳብኔት ወደ አዲሱ ቀይሮታል። በጽሁፉ ውስጥ ተጨማሪ ጊዜን ለመቀነስ ስለሚቻል አማራጮች ተጽፏል.

  9. ConfigMapsን በስም ቦታ እናስተካክል። kube-system:
    kubectl -n kube-system edit cm kubelet-config-1.16

    - እዚህ ይተኩ clusterDNS ወደ አዲሱ የ kube-dns አገልግሎት አይፒ አድራሻ፡- kubectl -n kube-system get svc kube-dns.

    kubectl -n kube-system edit cm kubeadm-config

    - ማስተካከል data.ClusterConfiguration.networking.serviceSubnet ወደ አዲሱ ንዑስ መረብ.

  10. የ kube-dns አድራሻ ስለተቀየረ በሁሉም ኖዶች ላይ የ kubelet ውቅረትን ማዘመን ያስፈልግዎታል፡-
    kubeadm upgrade node phase kubelet-config && systemctl restart kubelet
  11. በክላስተር ውስጥ ያሉትን ሁሉንም እንክብሎች እንደገና ለማስጀመር ይቀራል።
    kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(S+)s+(S+).*/kubectl --namespace 1 delete pod 2/e'

የቆይታ ጊዜ ማሳነስ

የእረፍት ጊዜን እንዴት መቀነስ እንደሚቻል ሀሳቦች

  1. የመቆጣጠሪያውን አውሮፕላን ከቀየሩ በኋላ አዲስ የ kube-dns አገልግሎት ይፍጠሩ ለምሳሌ በስሙ kube-dns-tmp እና አዲስ አድራሻ 172.24.0.10.
  2. ያድርጉ ፡፡ if በ etcdhelper ውስጥ የ kube-dns አገልግሎትን የማይለውጥ።
  3. በሁሉም kubelets ውስጥ አድራሻ ይተኩ ClusterDNS ወደ አዲሱ, አሮጌው አገልግሎት ከአዲሱ ጋር በተመሳሳይ ጊዜ መስራቱን ይቀጥላል.
  4. አፕሊኬሽኖች ያሏቸው ፖድዎች በተፈጥሮ ምክንያቶች ወይም በተስማሙበት ጊዜ በራሳቸው እስኪሽከረከሩ ድረስ ይጠብቁ።
  5. አገልግሎቱን ሰርዝ kube-dns-tmp እና መለወጥ serviceSubnetCIDR ለ kube-dns አገልግሎት.

ይህ እቅድ የአገልግሎቱን መወገድ ጊዜን ወደ ~ ደቂቃ ይቀንሳል kube-dns-tmp እና ለአገልግሎቱ ንዑስ አውታረ መረብን መለወጥ kube-dns.

podNetwork ማሻሻያ

በተመሳሳይ ጊዜ, የተገኘውን etcdhhelper በመጠቀም podNetworkን እንዴት ማሻሻል እንደሚቻል ለማየት ወስነናል. የእርምጃዎች ቅደም ተከተል እንደሚከተለው ነው.

  • ውስጥ ውቅሮችን ያስተካክሉ kube-system;
  • የኩቤ-ተቆጣጣሪ-አስተዳዳሪ አንጸባራቂን ማስተካከል;
  • በ etcd ውስጥ podCIDR በቀጥታ ይለውጡ;
  • ሁሉንም የክላስተር ኖዶች እንደገና አስነሳ።

አሁን ስለእነዚህ ድርጊቶች የበለጠ፡-

1. ConfigMaps በስም ቦታ ላይ ቀይር kube-system:

kubectl -n kube-system edit cm kubeadm-config

- ማስተካከል data.ClusterConfiguration.networking.podSubnet ወደ አዲስ ንዑስ መረብ 10.55.0.0/16.

kubectl -n kube-system edit cm kube-proxy

- ማስተካከል data.config.conf.clusterCIDR: 10.55.0.0/16.

2. የመቆጣጠሪያ-አስተዳዳሪውን አንጸባራቂ ቀይር፡-

vim /etc/kubernetes/manifests/kube-controller-manager.yaml

- ማስተካከል --cluster-cidr=10.55.0.0/16.

3. አሁን ያሉትን ዋጋዎች ይመልከቱ .spec.podCIDR, .spec.podCIDRs, .InternalIP, .status.addresses ለሁሉም የክላስተር አንጓዎች፡-

kubectl get no -o json | jq '[.items[] | {"name": .metadata.name, "podCIDR": .spec.podCIDR, "podCIDRs": .spec.podCIDRs, "InternalIP": (.status.addresses[] | select(.type == "InternalIP") | .address)}]'

[
  {
    "name": "kube-2-master",
    "podCIDR": "10.244.0.0/24",
    "podCIDRs": [
      "10.244.0.0/24"
    ],
    "InternalIP": "192.168.199.2"
  },
  {
    "name": "kube-2-master",
    "podCIDR": "10.244.0.0/24",
    "podCIDRs": [
      "10.244.0.0/24"
    ],
    "InternalIP": "10.0.1.239"
  },
  {
    "name": "kube-2-worker-01f438cf-579f9fd987-5l657",
    "podCIDR": "10.244.1.0/24",
    "podCIDRs": [
      "10.244.1.0/24"
    ],
    "InternalIP": "192.168.199.222"
  },
  {
    "name": "kube-2-worker-01f438cf-579f9fd987-5l657",
    "podCIDR": "10.244.1.0/24",
    "podCIDRs": [
      "10.244.1.0/24"
    ],
    "InternalIP": "10.0.4.73"
  }
]

4. በ etcd ውስጥ በቀጥታ በማርትዕ ፖድሲዲአርን ይተኩ፡

./etcdhelper -cacert /etc/kubernetes/pki/etcd/ca.crt -cert /etc/kubernetes/pki/etcd/server.crt -key /etc/kubernetes/pki/etcd/server.key -endpoint https://127.0.0.1:2379 change-pod-cidr 10.55.0.0/16

5. podCIDR በእርግጥ መቀየሩን ያረጋግጡ፡-

kubectl get no -o json | jq '[.items[] | {"name": .metadata.name, "podCIDR": .spec.podCIDR, "podCIDRs": .spec.podCIDRs, "InternalIP": (.status.addresses[] | select(.type == "InternalIP") | .address)}]'

[
  {
    "name": "kube-2-master",
    "podCIDR": "10.55.0.0/24",
    "podCIDRs": [
      "10.55.0.0/24"
    ],
    "InternalIP": "192.168.199.2"
  },
  {
    "name": "kube-2-master",
    "podCIDR": "10.55.0.0/24",
    "podCIDRs": [
      "10.55.0.0/24"
    ],
    "InternalIP": "10.0.1.239"
  },
  {
    "name": "kube-2-worker-01f438cf-579f9fd987-5l657",
    "podCIDR": "10.55.1.0/24",
    "podCIDRs": [
      "10.55.1.0/24"
    ],
    "InternalIP": "192.168.199.222"
  },
  {
    "name": "kube-2-worker-01f438cf-579f9fd987-5l657",
    "podCIDR": "10.55.1.0/24",
    "podCIDRs": [
      "10.55.1.0/24"
    ],
    "InternalIP": "10.0.4.73"
  }
]

6. ሁሉንም የክላስተር ኖዶች አንድ በአንድ እንደገና አስነሳ።

7. ቢያንስ አንድ አንጓ ካለ የድሮ podCIDR, ከዚያ ኩቤ-ተቆጣጣሪ-አስኪያጅ መጀመር ይሳነዋል እና በክላስተር ውስጥ ያሉ ፖድዎች ቀጠሮ አይያዙም.

በእርግጥ፣ podCIDRን መቀየር የበለጠ ቀላል በሆነ መንገድ ሊከናወን ይችላል (ለምሳሌ፡- እንደዚህ). ግን ከሁሉም በኋላ ፣ ከ etcd ጋር በቀጥታ እንዴት እንደሚሰራ ለመማር እንፈልጋለን ፣ ምክንያቱም የኩበርኔትስ እቃዎችን በ etcd ውስጥ ሲያርትዑ ሁኔታዎች አሉ - ብቸኛው የሚቻል ተለዋጭ. (ለምሳሌ፣ ያለማቋረጥ የአገልግሎት መስኩን መቀየር አይችሉም spec.clusterIP.)

ውጤቱ

ጽሑፉ በ etcd ውስጥ በቀጥታ ከመረጃ ጋር የመሥራት እድልን ያብራራል, ማለትም. የኩበርኔትስ ኤፒአይን ማለፍ። አንዳንድ ጊዜ ይህ አካሄድ "ተንኮለኛ ነገሮችን" እንዲያደርጉ ይፈቅድልዎታል. በጽሁፉ ውስጥ የተሰጡትን ስራዎች በእውነተኛ የK8s ስብስቦች ላይ ሞክረናል። ይሁን እንጂ በሰፊው ጥቅም ላይ እንዲውል ዝግጁነታቸው ሁኔታቸው ነው ፖሲ (የሃሳብ ማረጋገጫ). ስለዚህ፣ የተሻሻለውን የ etcdhelper እትም በክላስተርዎ ላይ ለመጠቀም ከፈለጉ በራስዎ ሃላፊነት ይጠቀሙ።

PS

በብሎጋችን ላይ ያንብቡ፡-

ምንጭ: hab.com

አስተያየት ያክሉ