2016-12-11 4 views
0

Мне нужно иметь возможность использовать batch/v2alpha1 и apps/v1alpha1 на k8s. В настоящее время я запускаю кластер с установленным 1.5.0-beta.1. Я предпочел бы сделать это в сценарии развертывания, но все, что я могу найти в поляхКак обновить версию API Kubernetes в сценарии развертывания или использовать --runtime-config

"apiVersionDefault": "2016-03-30", 
"apiVersionStorage": "2015-06-15", 

И нигде не могу найти ничего о том, что относится использовать для обновления тех. Также есть инструкции в документах kubernetes, которые объясняют, как использовать флаг --runtime-config на кубе-apiserver .. так что следуйте этим, я ssh'd в master, нашел файл манифеста kube-apiserver и отредактировал его, чтобы выглядеть так:

apiVersion: "v1" kind: "Pod" metadata: name: "kube-apiserver" namespace: "kube-system" labels: tier: control-plane component: kube-apiserver spec: hostNetwork: true containers: - name: "kube-apiserver" image: "gcr.io/google_containers/hyperkube-amd64:v1.5.0-beta.1" command: - "/hyperkube" - "apiserver" - "--admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota" - "--address=0.0.0.0" - "--allow-privileged" - "--insecure-port=8080" - "--secure-port=443" - "--cloud-provider=azure" - "--cloud-config=/etc/kubernetes/azure.json" - "--service-cluster-ip-range=10.0.0.0/16" - "--etcd-servers=http://127.0.0.1:4001" - "--tls-cert-file=/etc/kubernetes/certs/apiserver.crt" - "--tls-private-key-file=/etc/kubernetes/certs/apiserver.key" - "--client-ca-file=/etc/kubernetes/certs/ca.crt" - "--service-account-key-file=/etc/kubernetes/certs/apiserver.key" - "--v=4" - "--runtime-config=batch/v2alpha1,apps/v1alpha1" volumeMounts: - name: "etc-kubernetes" mountPath: "/etc/kubernetes" - name: "var-lib-kubelet" mountPath: "/var/lib/kubelet" volumes: - name: "etc-kubernetes" hostPath: path: "/etc/kubernetes" - name: "var-lib-kubelet" hostPath: path: "/var/lib/kubelet"

Это в значительной степени мой кластер сбросили атомную бомбу .. так что теперь я в полной растерянности. Я собираюсь перестроить кластер, поэтому я бы предпочел добавить это в шаблон развертывания, но действительно любая помощь была бы оценена.

+0

С этим вы сталкивались? Я открыл соответствующую проблему https://github.com/Azure/acs-engine/issues/178 –

+0

Я этого не сделал. Из того, что я мог сказать, потому что k8s на ACS использует hyperkube (например, службы, работающие внутри контейнеров докеров), обновление чего-либо почти невозможно. – josibake

ответ

0

Классы ACS-Engine позволяют задавать большинство параметров, которые вы хотите переопределить - см. this document for the cluster definitions. Я не думаю, что существует сценарий пост-развертывания, потому что нет общих параметров, которые вы хотите изменить с помощью apicontroller и других компонентов k8s после развертывания, отличного от обновлений версии K8s. Для этого в ACS-Engine есть скрипты и другие варианты для различных поставщиков облачных вычислений и вкусов кубернетов (т. Е. Tectonic имеет механизм автоматического обновления).

Чтобы вручную изменить значения после развертывания в ACS-Engine развернутого K8S кластера, вы можете вручную обновить манифестов здесь:

/etc/kubernetes/manifests/kube-apiserver.yaml 
/etc/kubernetes/manifests/kube-controller-manager.yaml 
/etc/kubernetes/manifests/kube-scheduler.yaml 

А также обновить значения в kubelet здесь (т.е. обновить версия kubernetes): /etc/default/kubelet

конечно, вы хотите, чтобы ваши kubectl drain узлов, прежде чем сделать эти изменения, перезагрузите узел, и после того, как узел возвращается в интернет и работает правильно kubectl uncordon узел.

Трудно сказать, почему ваш кластер был ядерным, не зная дополнительной информации. В общем, я бы сказал, что, вероятно, лучше всего, если вы делаете много изменений в apiversions и конфигурациях, которые, вероятно, вам нужны для нового кластера.

Смежные вопросы