我需要能够在k8上使用batch/v2alpha1
和apps/v1alpha1
。目前,我正在运行安装了1.5.0-beta.1
的群集。我更喜欢在部署脚本中执行此操作,但我能找到的只是字段
"apiVersionDefault": "2016-03-30",
"apiVersionStorage": "2015-06-15",
我无处可以找到用于更新这些日期的日期。 kubernetes文档中还有一些说明,解释了如何在kubes-apiserver上使用--runtime-config
标志..所以按照这些,我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 :(得分:0)
ACS-Engine集群允许指定您希望覆盖的大多数选项 - 请参阅this document for the cluster definitions。我不认为存在部署后脚本,因为除了K8s版本升级之外,在部署之后,您不希望使用apicontroller和其他k8s组件更改常用选项。为此,ACS-Engine中包含脚本以及各种云提供程序和kubernetes风格的其他选项(即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和配置进行大量更改可能是最好的。