संस्करण "एक्सटेंशन / v1beta1" में "तैनाती" के लिए कोई मेल नहीं है


27

मैं mojaloop तैनात करते समय समस्या रहा है .kubernetes जैसे त्रुटि लॉग के साथ जवाब दे रहा है

मैंने अपने कुबेरनेट्स संस्करण की जांच की है और 1.16 संस्करण है, इसलिए मैं एपीआई संस्करण के साथ इस तरह की समस्या को कैसे ठीक कर सकता हूं। अगर मैंने पाया है कि कुबेरनेट्स ऐप्स / v1beta2, ऐप्स / v1beta2 का समर्थन नहीं करते हैं तो मैं कुबेरनेट कैसे बना सकता हूं। वर्तमान में नहीं पदावनत संस्करण या समर्थित संस्करण का उपयोग करें मैं कुबेरनेट्स के लिए नया हूं और जो कोई भी मेरा समर्थन कर सकता है मैं खुश हूं

त्रुटि: सत्यापन विफल: "पहचानने में असमर्थ": संस्करण "ऐप्स / v1beta2" में प्रकार "परिनियोजन" के लिए कोई मिलान नहीं, "पहचानने में असमर्थ": "एक्सटेंशन / v1beta1" संस्करण में "तैनाती" के लिए कोई मिलान नहीं, असमर्थ पहचान "": संस्करण "apps / v1beta2" में "स्टेटफुलसेट" प्रकार के लिए कोई मेल नहीं, पहचानने में असमर्थ "": संस्करण "apps / v1beta1" में तरह "StatefulSet" के लिए कोई मेल नहीं]]


1
वर्तमान में समर्थित एपीस kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16
zerkms

मैं इस मुद्दे को कैसे पुन: पेश कर सकता हूं आप मुझे कुछ कदम
dan

जवाबों:


56

कुबेरनेट्स 1.16 में कुछ apiएस बदल दिए गए हैं।

आप जाँच सकते हैं कि कौन से एप्स वर्तमान कुबेरनेट्स ऑब्जेक्ट का उपयोग करके समर्थन करते हैं

$ kubectl api-resources | grep deployment
deployments                       deploy       apps                           true         Deployment

इसका मतलब यह है कि केवल एपिवर्जन डिपॉजिट के appsलिए सही है ( extensionsसमर्थन नहीं कर रहा है Deployment)। स्टेटफुलसेट के साथ भी यही स्थिति है।

आपको बस परिनियोजन और StatefuSet apiVersion को बदलने की आवश्यकता है apiVersion: apps/v1

यदि यह मदद नहीं करता है, तो कृपया अपने YAML को प्रश्न में जोड़ें।

EDIT समस्या के कारण हैल्म टेम्प्लेट में पुराने अपीयरेंस शामिल किए गए हैं, जो कि 1.16 संस्करण में समर्थित नहीं हैं, 2 संभावित समाधान हैं:

1. git clone पूरे रेपो और करने के लिए apiVersion की जगह apps/v1सभी टेम्पलेट्स / deployment.yaml का उपयोग कर लिपि में
2. Kubernetes के पुराने संस्करण का उपयोग करें (1.15) जब स्वीकार सत्यापनकर्ता extensionsके रूप में apiVersionके लिए Deployentऔर StatefulSet


मैं kubernettes डाउनग्रेड कर सकते हैं के बाद से mojaloop के लिए सभी तैनाती YAML फ़ाइल या kuberntes संस्करण 1.15 इसलिए साथ संगत मैं कैसे डाउनग्रेड कर सकते हैं ढाल बनाकर मैं तो एक soln प्राप्त कर सकते हैं
दान

1
मैं इस mojaloop / mojaloop helm चार्ट की जाँच कर रहा हूँ। दुर्भाग्य से, तैनाती वाले सभी टेम्प्लेट में एपीवर्शन होते हैं extensions/v1beta1:। संभावित वर्कअराउंड में से एक के रूप में git cloneपूरे रेपो में है और apps/v1सभी टेम्प्लेट / परिनियोजन में एपिवर्सन को प्रतिस्थापित करना है । ओम्ल स्क्रिप्ट का find . -name 'deployment.yaml' | xargs -n 1 perl -pi -e 's/(apps\/v1beta2)|(extensions\/v1beta1)/apps\/v1/g'.उपयोग करें दूसरा वर्कबाउंड केवल कुबेरनेट्स (1.15) के पुराने संस्करण का उपयोग कर सकता है जब सत्यापनकर्ता डिप्लेंट और स्टेटफुलसेट के लिए एपीवर्सन के एक्सटेंशन को स्वीकार करते हैं।
पजोटर्स

@ आप उपयोग कर रहे हैं Minikubeया Kubeadm?
पजोटर्स

kubeadm i ने मिनीकब
डैन

यू मुझे संस्करण 1.15 के लिए kubeadmn specfic की स्थापना के लिए कुछ कदम साझा कर सकते हैं मैं specfic संसाधन kubeadmn 1.15 की स्थापना पर विचार नहीं मिल सकता है
दान

4

आप विकल्प के रूप में मैन्युअल रूप से बदल सकते हैं। पतवार चार्ट प्राप्त करें:

helm fetch --untar stable/metabase

चार्ट फ़ोल्डर तक पहुँचें:

cd ./metabase

एपीआई संस्करण बदलें:

sed -i 's|extensions/v1beta1|apps/v1|g' ./templates/deployment.yaml

जोड़ें spec.selector.matchLabels:

spec:
[...]
selector:
    matchLabels:
    app: {{ template "metabase.name" . }}
[...]

अंत में अपना परिवर्तित चार्ट स्थापित करें:

helm install ./ \
  -n metabase \
  --namespace metabase \
  --set ingress.enabled=true \
  --set ingress.hosts={metabase.$(minikube ip).nip.io}

का आनंद लें!


0

यह मुझे परेशान कर रहा था क्योंकि मैं बहुत सारे हेल्म पैकेजों का परीक्षण कर रहा हूं इसलिए मैंने एक त्वरित स्क्रिप्ट लिखी है - जिसे आपके वर्कफ़्लो को नीचे से ऊपर क्रमबद्ध करने के लिए संशोधित किया जा सकता है

नई वर्कफ़्लो सबसे पहले चार्ट को आपकी वर्किंग डायरेक्टरी में tgz के रूप में लाती है

helm fetch repo/chart

फिर नीचे अपने काम में सीधे bash script चलाएं - जिसे मैंने helmk नाम दिया है

helmk myreleasename mynamespace chart.tgz [any parameters for kubectl create]

हेल्मक की सामग्री - काम करने के लिए अपने kubeconfig क्लस्टर्ननाम को संपादित करने की आवश्यकता है

#!/bin/bash
echo usage $0 releasename namespace chart.tgz [createparameter1] [createparameter2] ... [createparameter n]
echo This will use your namespace then shift back to default so be careful!!
kubectl create namespace $2   #this will create harmless error if namespace exists have to ignore
kubectl config set-context MYCLUSTERNAME --namespace $2
helm template -n $1 --namespace $2 $3 | kubectl convert -f /dev/stdin | kubectl create --save-config=true ${@:4}  -f /dev/stdin
#note the --namespace parameter in helm template above seems to be ignored so we have to manually switch context
kubectl config set-context MYCLUSTERNAME --namespace default

यह थोड़ा खतरनाक हैक है क्योंकि मैं मैन्युअल रूप से आपके नए वांछित नामस्थान संदर्भ पर स्विच करता हूं, तो फिर से वापस केवल एक ही उपयोगकर्ता के लिए उपयोग किया जाता है वास्तव में या टिप्पणी करें।

आपको इस तरह के kubectl कन्वर्ट सुविधा का उपयोग करने के बारे में एक चेतावनी मिलेगी

यदि आपको अनुकूलित करने के लिए YAML को संपादित करने की आवश्यकता है - बस एक / dev / stdin को इंटरमीडिएट फ़ाइलों में बदलें, लेकिन संभव है कि इसे सेव-कॉन्फिगर के साथ "create" का उपयोग करके प्राप्त किया जाए, जैसा कि मेरे पास है और फिर बस अपने परिवर्तनों को "लागू करें"। जिसका अर्थ है कि उन्हें कुबेरनेट में भी दर्ज किया जाएगा। सौभाग्य


0

इसे सरल बनाने के लिए आप वर्तमान इंस्टॉलेशन को API के पुराने संस्करण का उपयोग करने के लिए बाध्य न करें, लेकिन यदि आप यह जांचना चाहते हैं कि आप कौन सा वर्जन चालू क्यूब का समर्थन करते हैं, तो बस रन करें

root @ ubn64: ~ # kubectl एपीआई-संस्करण | grep-i ऐप

क्षुधा / v1

जड़ @ ubn64: ~ #

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.