Merge pull request #17270 from rifelpet/apiserver-133

Remove cloud-config and cloud-provider from 1.33 apiserver
This commit is contained in:
Kubernetes Prow Robot 2025-02-21 16:44:26 -08:00 committed by GitHub
commit d8a7a5cd7b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 68 additions and 41 deletions

View File

@ -573,7 +573,9 @@ func (b *KubeAPIServerBuilder) buildPod(ctx context.Context, kubeAPIServer *kops
return nil, fmt.Errorf("error building kube-apiserver flags: %v", err) return nil, fmt.Errorf("error building kube-apiserver flags: %v", err)
} }
flags = append(flags, fmt.Sprintf("--cloud-config=%s", InTreeCloudConfigFilePath)) if b.IsKubernetesLT("1.33") {
flags = append(flags, fmt.Sprintf("--cloud-config=%s", InTreeCloudConfigFilePath))
}
pod := &v1.Pod{ pod := &v1.Pod{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{

View File

@ -30,7 +30,7 @@ spec:
iam: {} iam: {}
kubelet: kubelet:
anonymousAuth: false anonymousAuth: false
kubernetesVersion: v1.28.0 kubernetesVersion: v1.33.0
masterPublicName: api.minimal.example.com masterPublicName: api.minimal.example.com
networkCIDR: 172.20.0.0/16 networkCIDR: 172.20.0.0/16
networking: networking:

View File

@ -24,15 +24,12 @@ contents: |
- --authorization-mode=AlwaysAllow - --authorization-mode=AlwaysAllow
- --bind-address=0.0.0.0 - --bind-address=0.0.0.0
- --client-ca-file=/srv/kubernetes/ca.crt - --client-ca-file=/srv/kubernetes/ca.crt
- --cloud-config=/etc/kubernetes/in-tree-cloud.config
- --cloud-provider=external
- --enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,NodeRestriction,ResourceQuota - --enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,NodeRestriction,ResourceQuota
- --etcd-cafile=/srv/kubernetes/kube-apiserver/etcd-ca.crt - --etcd-cafile=/srv/kubernetes/kube-apiserver/etcd-ca.crt
- --etcd-certfile=/srv/kubernetes/kube-apiserver/etcd-client.crt - --etcd-certfile=/srv/kubernetes/kube-apiserver/etcd-client.crt
- --etcd-keyfile=/srv/kubernetes/kube-apiserver/etcd-client.key - --etcd-keyfile=/srv/kubernetes/kube-apiserver/etcd-client.key
- --etcd-servers-overrides=/events#https://127.0.0.1:4002 - --etcd-servers-overrides=/events#https://127.0.0.1:4002
- --etcd-servers=https://127.0.0.1:4001 - --etcd-servers=https://127.0.0.1:4001
- --feature-gates=InTreePluginAWSUnregister=true
- --kubelet-client-certificate=/srv/kubernetes/kube-apiserver/kubelet-api.crt - --kubelet-client-certificate=/srv/kubernetes/kube-apiserver/kubelet-api.crt
- --kubelet-client-key=/srv/kubernetes/kube-apiserver/kubelet-api.key - --kubelet-client-key=/srv/kubernetes/kube-apiserver/kubelet-api.key
- --kubelet-preferred-address-types=InternalIP,Hostname,ExternalIP - --kubelet-preferred-address-types=InternalIP,Hostname,ExternalIP
@ -55,23 +52,44 @@ contents: |
- --v=2 - --v=2
command: command:
- /go-runner - /go-runner
image: registry.k8s.io/kube-apiserver:v1.28.0 image: registry.k8s.io/kube-apiserver:v1.33.0
livenessProbe: livenessProbe:
failureThreshold: 8
httpGet: httpGet:
host: 127.0.0.1 host: 127.0.0.1
path: /healthz path: /livez
port: 443 port: 443
scheme: HTTPS scheme: HTTPS
initialDelaySeconds: 45 initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 15 timeoutSeconds: 15
name: kube-apiserver name: kube-apiserver
ports: ports:
- containerPort: 443 - containerPort: 443
hostPort: 443 hostPort: 443
name: https name: https
readinessProbe:
failureThreshold: 3
httpGet:
host: 127.0.0.1
path: /healthz
port: 443
scheme: HTTPS
periodSeconds: 1
timeoutSeconds: 15
resources: resources:
requests: requests:
cpu: 150m cpu: 150m
startupProbe:
failureThreshold: 30
httpGet:
host: 127.0.0.1
path: /livez
port: 443
scheme: HTTPS
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 300
volumeMounts: volumeMounts:
- mountPath: /var/log/kube-apiserver.log - mountPath: /var/log/kube-apiserver.log
name: logfile name: logfile

View File

@ -24,7 +24,6 @@ contents: |
- --cluster-signing-cert-file=/srv/kubernetes/kube-controller-manager/ca.crt - --cluster-signing-cert-file=/srv/kubernetes/kube-controller-manager/ca.crt
- --cluster-signing-key-file=/srv/kubernetes/kube-controller-manager/ca.key - --cluster-signing-key-file=/srv/kubernetes/kube-controller-manager/ca.key
- --configure-cloud-routes=true - --configure-cloud-routes=true
- --feature-gates=InTreePluginAWSUnregister=true
- --flex-volume-plugin-dir=/usr/libexec/kubernetes/kubelet-plugins/volume/exec/ - --flex-volume-plugin-dir=/usr/libexec/kubernetes/kubelet-plugins/volume/exec/
- --kubeconfig=/var/lib/kube-controller-manager/kubeconfig - --kubeconfig=/var/lib/kube-controller-manager/kubeconfig
- --leader-elect=true - --leader-elect=true
@ -36,7 +35,7 @@ contents: |
- --v=2 - --v=2
command: command:
- /go-runner - /go-runner
image: registry.k8s.io/kube-controller-manager:v1.28.0 image: registry.k8s.io/kube-controller-manager:v1.33.0
livenessProbe: livenessProbe:
httpGet: httpGet:
host: 127.0.0.1 host: 127.0.0.1

View File

@ -23,7 +23,7 @@ contents: |
- --v=2 - --v=2
command: command:
- /go-runner - /go-runner
image: registry.k8s.io/kube-proxy:v1.28.0 image: registry.k8s.io/kube-proxy:v1.33.0
name: kube-proxy name: kube-proxy
resources: resources:
requests: requests:

View File

@ -16,14 +16,13 @@ contents: |
- --authentication-kubeconfig=/var/lib/kube-scheduler/kubeconfig - --authentication-kubeconfig=/var/lib/kube-scheduler/kubeconfig
- --authorization-kubeconfig=/var/lib/kube-scheduler/kubeconfig - --authorization-kubeconfig=/var/lib/kube-scheduler/kubeconfig
- --config=/var/lib/kube-scheduler/config.yaml - --config=/var/lib/kube-scheduler/config.yaml
- --feature-gates=InTreePluginAWSUnregister=true
- --leader-elect=true - --leader-elect=true
- --tls-cert-file=/srv/kubernetes/kube-scheduler/server.crt - --tls-cert-file=/srv/kubernetes/kube-scheduler/server.crt
- --tls-private-key-file=/srv/kubernetes/kube-scheduler/server.key - --tls-private-key-file=/srv/kubernetes/kube-scheduler/server.key
- --v=2 - --v=2
command: command:
- /go-runner - /go-runner
image: registry.k8s.io/kube-scheduler:v1.28.0 image: registry.k8s.io/kube-scheduler:v1.33.0
livenessProbe: livenessProbe:
httpGet: httpGet:
host: 127.0.0.1 host: 127.0.0.1

View File

@ -21,6 +21,7 @@ import (
"net" "net"
"strings" "strings"
"github.com/blang/semver/v4"
"k8s.io/apimachinery/pkg/util/validation/field" "k8s.io/apimachinery/pkg/util/validation/field"
"k8s.io/kops/pkg/apis/kops" "k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/apis/kops/util" "k8s.io/kops/pkg/apis/kops/util"
@ -40,12 +41,17 @@ func ValidateCluster(c *kops.Cluster, strict bool, vfsContext *vfs.VFSContext) f
// KubernetesVersion // KubernetesVersion
// This is one case we return the error because a large part of the rest of the validation logic depends on a valid kubernetes version. // This is one case we return the error because a large part of the rest of the validation logic depends on a valid kubernetes version.
var k8sVersion *semver.Version
var err error
if c.Spec.KubernetesVersion == "" { if c.Spec.KubernetesVersion == "" {
allErrs = append(allErrs, field.Required(fieldSpec.Child("kubernetesVersion"), "")) allErrs = append(allErrs, field.Required(fieldSpec.Child("kubernetesVersion"), ""))
return allErrs return allErrs
} else if _, err := util.ParseKubernetesVersion(c.Spec.KubernetesVersion); err != nil { } else {
allErrs = append(allErrs, field.Invalid(fieldSpec.Child("kubernetesVersion"), c.Spec.KubernetesVersion, "unable to determine kubernetes version")) k8sVersion, err = util.ParseKubernetesVersion(c.Spec.KubernetesVersion)
return allErrs if err != nil {
allErrs = append(allErrs, field.Invalid(fieldSpec.Child("kubernetesVersion"), c.Spec.KubernetesVersion, "unable to determine kubernetes version"))
return allErrs
}
} }
if strict && c.Spec.Kubelet == nil { if strict && c.Spec.Kubelet == nil {
@ -72,7 +78,6 @@ func ValidateCluster(c *kops.Cluster, strict bool, vfsContext *vfs.VFSContext) f
var nonMasqueradeCIDR *net.IPNet var nonMasqueradeCIDR *net.IPNet
var serviceClusterIPRange *net.IPNet var serviceClusterIPRange *net.IPNet
var err error
if c.Spec.Networking.NonMasqueradeCIDR != "" { if c.Spec.Networking.NonMasqueradeCIDR != "" {
_, nonMasqueradeCIDR, _ = net.ParseCIDR(c.Spec.Networking.NonMasqueradeCIDR) _, nonMasqueradeCIDR, _ = net.ParseCIDR(c.Spec.Networking.NonMasqueradeCIDR)
@ -182,8 +187,10 @@ func ValidateCluster(c *kops.Cluster, strict bool, vfsContext *vfs.VFSContext) f
} }
} }
if c.Spec.KubeAPIServer != nil && (strict || c.Spec.KubeAPIServer.CloudProvider != "") { if c.Spec.KubeAPIServer != nil && (strict || c.Spec.KubeAPIServer.CloudProvider != "") {
if c.Spec.KubeAPIServer.CloudProvider != "external" && k8sCloudProvider != c.Spec.KubeAPIServer.CloudProvider { if k8sVersion != nil && k8sVersion.LT(semver.MustParse("1.33.0")) {
allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("kubeAPIServer", "cloudProvider"), "Did not match cluster cloudProvider")) if c.Spec.KubeAPIServer.CloudProvider != "external" && k8sCloudProvider != c.Spec.KubeAPIServer.CloudProvider {
allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("kubeAPIServer", "cloudProvider"), "Did not match cluster cloudProvider"))
}
} }
} }
if c.Spec.KubeControllerManager != nil && (strict || c.Spec.KubeControllerManager.CloudProvider != "") { if c.Spec.KubeControllerManager != nil && (strict || c.Spec.KubeControllerManager.CloudProvider != "") {

View File

@ -97,29 +97,31 @@ func (b *KubeAPIServerOptionsBuilder) BuildOptions(cluster *kops.Cluster) error
} }
c.Image = image c.Image = image
switch cluster.GetCloudProvider() { if b.controlPlaneKubernetesVersion.IsLT("1.33") {
case kops.CloudProviderAWS: switch cluster.GetCloudProvider() {
c.CloudProvider = "aws" case kops.CloudProviderAWS:
case kops.CloudProviderGCE: c.CloudProvider = "aws"
c.CloudProvider = "gce" case kops.CloudProviderGCE:
case kops.CloudProviderDO: c.CloudProvider = "gce"
c.CloudProvider = "external" case kops.CloudProviderDO:
case kops.CloudProviderHetzner: c.CloudProvider = "external"
c.CloudProvider = "external" case kops.CloudProviderHetzner:
case kops.CloudProviderOpenstack: c.CloudProvider = "external"
c.CloudProvider = "openstack" case kops.CloudProviderOpenstack:
case kops.CloudProviderAzure: c.CloudProvider = "openstack"
c.CloudProvider = "azure" case kops.CloudProviderAzure:
case kops.CloudProviderScaleway: c.CloudProvider = "azure"
c.CloudProvider = "external" case kops.CloudProviderScaleway:
case kops.CloudProviderMetal: c.CloudProvider = "external"
c.CloudProvider = "external" case kops.CloudProviderMetal:
default: c.CloudProvider = "external"
return fmt.Errorf("unknown cloudprovider %q", cluster.GetCloudProvider()) default:
} return fmt.Errorf("unknown cloudprovider %q", cluster.GetCloudProvider())
}
if clusterSpec.ExternalCloudControllerManager != nil { if clusterSpec.ExternalCloudControllerManager != nil {
c.CloudProvider = "external" c.CloudProvider = "external"
}
} }
c.LogLevel = 2 c.LogLevel = 2