mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 21:47:07 +00:00
Merge pull request #52542 from sbezverk/kubeadm_issue_390
Automatic merge from submit-queue (batch tested with PRs 50890, 52484, 52542, 52567, 50672). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.. kubeadm: Switching to apps/v1beta2
This commit is contained in:
commit
30bb5153be
@ -42,8 +42,8 @@ go_library(
|
|||||||
"//cmd/kubeadm/app/util/apiclient:go_default_library",
|
"//cmd/kubeadm/app/util/apiclient:go_default_library",
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/util/version:go_default_library",
|
"//pkg/util/version:go_default_library",
|
||||||
|
"//vendor/k8s.io/api/apps/v1beta2:go_default_library",
|
||||||
"//vendor/k8s.io/api/core/v1:go_default_library",
|
"//vendor/k8s.io/api/core/v1:go_default_library",
|
||||||
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
|
|
||||||
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
@ -21,8 +21,8 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
|
||||||
|
apps "k8s.io/api/apps/v1beta2"
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
extensions "k8s.io/api/extensions/v1beta1"
|
|
||||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
kuberuntime "k8s.io/apimachinery/pkg/runtime"
|
kuberuntime "k8s.io/apimachinery/pkg/runtime"
|
||||||
@ -96,7 +96,7 @@ func CreateServiceAccount(client clientset.Interface) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func createKubeDNSAddon(deploymentBytes, serviceBytes []byte, client clientset.Interface) error {
|
func createKubeDNSAddon(deploymentBytes, serviceBytes []byte, client clientset.Interface) error {
|
||||||
kubednsDeployment := &extensions.Deployment{}
|
kubednsDeployment := &apps.Deployment{}
|
||||||
if err := kuberuntime.DecodeInto(api.Codecs.UniversalDecoder(), deploymentBytes, kubednsDeployment); err != nil {
|
if err := kuberuntime.DecodeInto(api.Codecs.UniversalDecoder(), deploymentBytes, kubednsDeployment); err != nil {
|
||||||
return fmt.Errorf("unable to decode kube-dns deployment %v", err)
|
return fmt.Errorf("unable to decode kube-dns deployment %v", err)
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ package dns
|
|||||||
const (
|
const (
|
||||||
// v170AndAboveKubeDNSDeployment is the kube-dns Deployment manifest for the kube-dns manifest for v1.7+
|
// v170AndAboveKubeDNSDeployment is the kube-dns Deployment manifest for the kube-dns manifest for v1.7+
|
||||||
v170AndAboveKubeDNSDeployment = `
|
v170AndAboveKubeDNSDeployment = `
|
||||||
apiVersion: extensions/v1beta1
|
apiVersion: apps/v1beta2
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
name: kube-dns
|
name: kube-dns
|
||||||
|
@ -34,8 +34,8 @@ go_library(
|
|||||||
"//cmd/kubeadm/app/util/apiclient:go_default_library",
|
"//cmd/kubeadm/app/util/apiclient:go_default_library",
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//plugin/pkg/scheduler/algorithm:go_default_library",
|
"//plugin/pkg/scheduler/algorithm:go_default_library",
|
||||||
|
"//vendor/k8s.io/api/apps/v1beta2:go_default_library",
|
||||||
"//vendor/k8s.io/api/core/v1:go_default_library",
|
"//vendor/k8s.io/api/core/v1:go_default_library",
|
||||||
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
|
|
||||||
"//vendor/k8s.io/api/rbac/v1beta1:go_default_library",
|
"//vendor/k8s.io/api/rbac/v1beta1:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
@ -50,7 +50,7 @@ data:
|
|||||||
|
|
||||||
// KubeProxyDaemonSet is the proxy DaemonSet manifest
|
// KubeProxyDaemonSet is the proxy DaemonSet manifest
|
||||||
KubeProxyDaemonSet = `
|
KubeProxyDaemonSet = `
|
||||||
apiVersion: extensions/v1beta1
|
apiVersion: apps/v1beta2
|
||||||
kind: DaemonSet
|
kind: DaemonSet
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
|
@ -20,8 +20,8 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
|
||||||
|
apps "k8s.io/api/apps/v1beta2"
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
extensions "k8s.io/api/extensions/v1beta1"
|
|
||||||
rbac "k8s.io/api/rbac/v1beta1"
|
rbac "k8s.io/api/rbac/v1beta1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
kuberuntime "k8s.io/apimachinery/pkg/runtime"
|
kuberuntime "k8s.io/apimachinery/pkg/runtime"
|
||||||
@ -116,7 +116,7 @@ func createKubeProxyAddon(configMapBytes, daemonSetbytes []byte, client clientse
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
kubeproxyDaemonSet := &extensions.DaemonSet{}
|
kubeproxyDaemonSet := &apps.DaemonSet{}
|
||||||
if err := kuberuntime.DecodeInto(api.Codecs.UniversalDecoder(), daemonSetbytes, kubeproxyDaemonSet); err != nil {
|
if err := kuberuntime.DecodeInto(api.Codecs.UniversalDecoder(), daemonSetbytes, kubeproxyDaemonSet); err != nil {
|
||||||
return fmt.Errorf("unable to decode kube-proxy daemonset %v", err)
|
return fmt.Errorf("unable to decode kube-proxy daemonset %v", err)
|
||||||
}
|
}
|
||||||
|
@ -35,8 +35,8 @@ go_library(
|
|||||||
"//cmd/kubeadm/app/util:go_default_library",
|
"//cmd/kubeadm/app/util:go_default_library",
|
||||||
"//cmd/kubeadm/app/util/apiclient:go_default_library",
|
"//cmd/kubeadm/app/util/apiclient:go_default_library",
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
|
"//vendor/k8s.io/api/apps/v1beta2:go_default_library",
|
||||||
"//vendor/k8s.io/api/core/v1:go_default_library",
|
"//vendor/k8s.io/api/core/v1:go_default_library",
|
||||||
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
|
|
||||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
|
"//vendor/k8s.io/client-go/kubernetes:go_default_library",
|
||||||
|
@ -22,8 +22,8 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
apps "k8s.io/api/apps/v1beta2"
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
extensions "k8s.io/api/extensions/v1beta1"
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
kuberuntime "k8s.io/apimachinery/pkg/runtime"
|
kuberuntime "k8s.io/apimachinery/pkg/runtime"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
@ -129,28 +129,28 @@ func CreateSelfHostedControlPlane(manifestsDir, kubeConfigDir string, cfg *kubea
|
|||||||
}
|
}
|
||||||
|
|
||||||
// BuildDaemonSet is responsible for mutating the PodSpec and return a DaemonSet which is suitable for the self-hosting purporse
|
// BuildDaemonSet is responsible for mutating the PodSpec and return a DaemonSet which is suitable for the self-hosting purporse
|
||||||
func BuildDaemonSet(name string, podSpec *v1.PodSpec, mutators map[string][]PodSpecMutatorFunc) *extensions.DaemonSet {
|
func BuildDaemonSet(name string, podSpec *v1.PodSpec, mutators map[string][]PodSpecMutatorFunc) *apps.DaemonSet {
|
||||||
|
|
||||||
// Mutate the PodSpec so it's suitable for self-hosting
|
// Mutate the PodSpec so it's suitable for self-hosting
|
||||||
mutatePodSpec(mutators, name, podSpec)
|
mutatePodSpec(mutators, name, podSpec)
|
||||||
|
|
||||||
// Return a DaemonSet based on that Spec
|
// Return a DaemonSet based on that Spec
|
||||||
return &extensions.DaemonSet{
|
return &apps.DaemonSet{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: kubeadmconstants.AddSelfHostedPrefix(name),
|
Name: kubeadmconstants.AddSelfHostedPrefix(name),
|
||||||
Namespace: metav1.NamespaceSystem,
|
Namespace: metav1.NamespaceSystem,
|
||||||
Labels: BuildSelfhostedComponentLabels(name),
|
Labels: BuildSelfhostedComponentLabels(name),
|
||||||
},
|
},
|
||||||
Spec: extensions.DaemonSetSpec{
|
Spec: apps.DaemonSetSpec{
|
||||||
Template: v1.PodTemplateSpec{
|
Template: v1.PodTemplateSpec{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Labels: BuildSelfhostedComponentLabels(name),
|
Labels: BuildSelfhostedComponentLabels(name),
|
||||||
},
|
},
|
||||||
Spec: *podSpec,
|
Spec: *podSpec,
|
||||||
},
|
},
|
||||||
UpdateStrategy: extensions.DaemonSetUpdateStrategy{
|
UpdateStrategy: apps.DaemonSetUpdateStrategy{
|
||||||
// Make the DaemonSet utilize the RollingUpdate rollout strategy
|
// Make the DaemonSet utilize the RollingUpdate rollout strategy
|
||||||
Type: extensions.RollingUpdateDaemonSetStrategyType,
|
Type: apps.RollingUpdateDaemonSetStrategyType,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -36,8 +36,8 @@ go_library(
|
|||||||
"//pkg/bootstrap/api:go_default_library",
|
"//pkg/bootstrap/api:go_default_library",
|
||||||
"//pkg/util/version:go_default_library",
|
"//pkg/util/version:go_default_library",
|
||||||
"//pkg/version:go_default_library",
|
"//pkg/version:go_default_library",
|
||||||
|
"//vendor/k8s.io/api/apps/v1beta2:go_default_library",
|
||||||
"//vendor/k8s.io/api/core/v1:go_default_library",
|
"//vendor/k8s.io/api/core/v1:go_default_library",
|
||||||
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
|
|
||||||
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/fields:go_default_library",
|
||||||
|
@ -21,8 +21,8 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
apps "k8s.io/api/apps/v1beta2"
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
extensions "k8s.io/api/extensions/v1beta1"
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
||||||
@ -166,7 +166,7 @@ func getNotReadyDaemonSets(client clientset.Interface) ([]error, error) {
|
|||||||
notReadyDaemonSets := []error{}
|
notReadyDaemonSets := []error{}
|
||||||
for _, component := range constants.MasterComponents {
|
for _, component := range constants.MasterComponents {
|
||||||
dsName := constants.AddSelfHostedPrefix(component)
|
dsName := constants.AddSelfHostedPrefix(component)
|
||||||
ds, err := client.ExtensionsV1beta1().DaemonSets(metav1.NamespaceSystem).Get(dsName, metav1.GetOptions{})
|
ds, err := client.AppsV1beta2().DaemonSets(metav1.NamespaceSystem).Get(dsName, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("couldn't get daemonset %q in the %s namespace", dsName, metav1.NamespaceSystem)
|
return nil, fmt.Errorf("couldn't get daemonset %q in the %s namespace", dsName, metav1.NamespaceSystem)
|
||||||
}
|
}
|
||||||
@ -179,7 +179,7 @@ func getNotReadyDaemonSets(client clientset.Interface) ([]error, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// daemonSetHealth is a helper function for getting the health of a DaemonSet's status
|
// daemonSetHealth is a helper function for getting the health of a DaemonSet's status
|
||||||
func daemonSetHealth(dsStatus *extensions.DaemonSetStatus) error {
|
func daemonSetHealth(dsStatus *apps.DaemonSetStatus) error {
|
||||||
if dsStatus.CurrentNumberScheduled != dsStatus.DesiredNumberScheduled {
|
if dsStatus.CurrentNumberScheduled != dsStatus.DesiredNumberScheduled {
|
||||||
return fmt.Errorf("current number of scheduled Pods ('%d') doesn't match the amount of desired Pods ('%d')", dsStatus.CurrentNumberScheduled, dsStatus.DesiredNumberScheduled)
|
return fmt.Errorf("current number of scheduled Pods ('%d') doesn't match the amount of desired Pods ('%d')", dsStatus.CurrentNumberScheduled, dsStatus.DesiredNumberScheduled)
|
||||||
}
|
}
|
||||||
|
@ -20,8 +20,8 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
apps "k8s.io/api/apps/v1beta2"
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
extensions "k8s.io/api/extensions/v1beta1"
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
||||||
@ -146,14 +146,14 @@ func addPrepullPrefix(component string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// buildPrePullDaemonSet builds the DaemonSet that ensures the control plane image is available
|
// buildPrePullDaemonSet builds the DaemonSet that ensures the control plane image is available
|
||||||
func buildPrePullDaemonSet(component, image string) *extensions.DaemonSet {
|
func buildPrePullDaemonSet(component, image string) *apps.DaemonSet {
|
||||||
var gracePeriodSecs int64
|
var gracePeriodSecs int64
|
||||||
return &extensions.DaemonSet{
|
return &apps.DaemonSet{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: addPrepullPrefix(component),
|
Name: addPrepullPrefix(component),
|
||||||
Namespace: metav1.NamespaceSystem,
|
Namespace: metav1.NamespaceSystem,
|
||||||
},
|
},
|
||||||
Spec: extensions.DaemonSetSpec{
|
Spec: apps.DaemonSetSpec{
|
||||||
Template: v1.PodTemplateSpec{
|
Template: v1.PodTemplateSpec{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Labels: map[string]string{
|
Labels: map[string]string{
|
||||||
|
@ -20,8 +20,8 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
apps "k8s.io/api/apps/v1beta2"
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
extensions "k8s.io/api/extensions/v1beta1"
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
||||||
@ -49,7 +49,7 @@ const (
|
|||||||
// controlPlaneComponentResources holds the relevant Pod and DaemonSet associated with a control plane component
|
// controlPlaneComponentResources holds the relevant Pod and DaemonSet associated with a control plane component
|
||||||
type controlPlaneComponentResources struct {
|
type controlPlaneComponentResources struct {
|
||||||
pod *v1.Pod
|
pod *v1.Pod
|
||||||
daemonSet *extensions.DaemonSet
|
daemonSet *apps.DaemonSet
|
||||||
}
|
}
|
||||||
|
|
||||||
// SelfHostedControlPlane upgrades a self-hosted control plane
|
// SelfHostedControlPlane upgrades a self-hosted control plane
|
||||||
@ -119,7 +119,7 @@ func SelfHostedControlPlane(client clientset.Interface, waiter apiclient.Waiter,
|
|||||||
// During this upgrade; the temporary/backup component will take over
|
// During this upgrade; the temporary/backup component will take over
|
||||||
if err := apiclient.TryRunCommand(func() error {
|
if err := apiclient.TryRunCommand(func() error {
|
||||||
|
|
||||||
if _, err := client.ExtensionsV1beta1().DaemonSets(newDS.ObjectMeta.Namespace).Update(newDS); err != nil {
|
if _, err := client.AppsV1beta2().DaemonSets(newDS.ObjectMeta.Namespace).Update(newDS); err != nil {
|
||||||
return fmt.Errorf("couldn't update self-hosted component's DaemonSet: %v", err)
|
return fmt.Errorf("couldn't update self-hosted component's DaemonSet: %v", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -158,13 +158,13 @@ func SelfHostedControlPlane(client clientset.Interface, waiter apiclient.Waiter,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// BuildUpgradedDaemonSetsFromConfig takes a config object and the current version and returns the DaemonSet objects to post to the master
|
// BuildUpgradedDaemonSetsFromConfig takes a config object and the current version and returns the DaemonSet objects to post to the master
|
||||||
func BuildUpgradedDaemonSetsFromConfig(cfg *kubeadmapi.MasterConfiguration, k8sVersion *version.Version) map[string]*extensions.DaemonSet {
|
func BuildUpgradedDaemonSetsFromConfig(cfg *kubeadmapi.MasterConfiguration, k8sVersion *version.Version) map[string]*apps.DaemonSet {
|
||||||
// Here the map of different mutators to use for the control plane's podspec is stored
|
// Here the map of different mutators to use for the control plane's podspec is stored
|
||||||
mutators := selfhosting.GetMutatorsFromFeatureGates(cfg.FeatureGates)
|
mutators := selfhosting.GetMutatorsFromFeatureGates(cfg.FeatureGates)
|
||||||
// Get the new PodSpecs to use
|
// Get the new PodSpecs to use
|
||||||
controlPlanePods := controlplane.GetStaticPodSpecs(cfg, k8sVersion)
|
controlPlanePods := controlplane.GetStaticPodSpecs(cfg, k8sVersion)
|
||||||
// Store the created DaemonSets in this map
|
// Store the created DaemonSets in this map
|
||||||
controlPlaneDaemonSets := map[string]*extensions.DaemonSet{}
|
controlPlaneDaemonSets := map[string]*apps.DaemonSet{}
|
||||||
|
|
||||||
for _, component := range constants.MasterComponents {
|
for _, component := range constants.MasterComponents {
|
||||||
podSpec := controlPlanePods[component].Spec
|
podSpec := controlPlanePods[component].Spec
|
||||||
@ -196,7 +196,7 @@ func buildTempUpgradeDSLabelQuery(component string) string {
|
|||||||
|
|
||||||
// mutateTempDaemonSet mutates the specified self-hosted DaemonSet for the specified component
|
// mutateTempDaemonSet mutates the specified self-hosted DaemonSet for the specified component
|
||||||
// in a way that makes it possible to post a nearly identical, temporary DaemonSet as a backup
|
// in a way that makes it possible to post a nearly identical, temporary DaemonSet as a backup
|
||||||
func mutateTempDaemonSet(tempDS *extensions.DaemonSet, component string) {
|
func mutateTempDaemonSet(tempDS *apps.DaemonSet, component string) {
|
||||||
// Prefix the name of the temporary DaemonSet with upgradeTempDSPrefix
|
// Prefix the name of the temporary DaemonSet with upgradeTempDSPrefix
|
||||||
tempDS.ObjectMeta.Name = addTempUpgradeDSPrefix(tempDS.ObjectMeta.Name)
|
tempDS.ObjectMeta.Name = addTempUpgradeDSPrefix(tempDS.ObjectMeta.Name)
|
||||||
// Set .Labels to something else than the "real" self-hosted components have
|
// Set .Labels to something else than the "real" self-hosted components have
|
||||||
@ -206,7 +206,7 @@ func mutateTempDaemonSet(tempDS *extensions.DaemonSet, component string) {
|
|||||||
// Clean all unnecessary ObjectMeta fields
|
// Clean all unnecessary ObjectMeta fields
|
||||||
tempDS.ObjectMeta = extractRelevantObjectMeta(tempDS.ObjectMeta)
|
tempDS.ObjectMeta = extractRelevantObjectMeta(tempDS.ObjectMeta)
|
||||||
// Reset .Status as we're posting a new object
|
// Reset .Status as we're posting a new object
|
||||||
tempDS.Status = extensions.DaemonSetStatus{}
|
tempDS.Status = apps.DaemonSetStatus{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// extractRelevantObjectMeta returns only the relevant parts of ObjectMeta required when creating
|
// extractRelevantObjectMeta returns only the relevant parts of ObjectMeta required when creating
|
||||||
@ -234,7 +234,7 @@ func getCurrentControlPlaneComponentResources(client clientset.Interface) (map[s
|
|||||||
|
|
||||||
for _, component := range constants.MasterComponents {
|
for _, component := range constants.MasterComponents {
|
||||||
var podList *v1.PodList
|
var podList *v1.PodList
|
||||||
var currentDS *extensions.DaemonSet
|
var currentDS *apps.DaemonSet
|
||||||
|
|
||||||
// Get the self-hosted pod associated with the component
|
// Get the self-hosted pod associated with the component
|
||||||
podLabelSelector := selfhosting.BuildSelfHostedComponentLabelQuery(component)
|
podLabelSelector := selfhosting.BuildSelfHostedComponentLabelQuery(component)
|
||||||
@ -256,7 +256,7 @@ func getCurrentControlPlaneComponentResources(client clientset.Interface) (map[s
|
|||||||
if err := apiclient.TryRunCommand(func() error {
|
if err := apiclient.TryRunCommand(func() error {
|
||||||
var tryrunerr error
|
var tryrunerr error
|
||||||
// Try to get the current self-hosted component
|
// Try to get the current self-hosted component
|
||||||
currentDS, tryrunerr = client.ExtensionsV1beta1().DaemonSets(metav1.NamespaceSystem).Get(dsName, metav1.GetOptions{})
|
currentDS, tryrunerr = client.AppsV1beta2().DaemonSets(metav1.NamespaceSystem).Get(dsName, metav1.GetOptions{})
|
||||||
return tryrunerr // note that tryrunerr is most likely nil here (in successful cases)
|
return tryrunerr // note that tryrunerr is most likely nil here (in successful cases)
|
||||||
}, selfHostingFailureThreshold); err != nil {
|
}, selfHostingFailureThreshold); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -18,8 +18,8 @@ go_library(
|
|||||||
deps = [
|
deps = [
|
||||||
"//cmd/kubeadm/app/constants:go_default_library",
|
"//cmd/kubeadm/app/constants:go_default_library",
|
||||||
"//pkg/registry/core/service/ipallocator:go_default_library",
|
"//pkg/registry/core/service/ipallocator:go_default_library",
|
||||||
|
"//vendor/k8s.io/api/apps/v1beta2:go_default_library",
|
||||||
"//vendor/k8s.io/api/core/v1:go_default_library",
|
"//vendor/k8s.io/api/core/v1:go_default_library",
|
||||||
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
|
|
||||||
"//vendor/k8s.io/api/rbac/v1beta1:go_default_library",
|
"//vendor/k8s.io/api/rbac/v1beta1:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
@ -19,8 +19,8 @@ package apiclient
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
apps "k8s.io/api/apps/v1beta2"
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
extensions "k8s.io/api/extensions/v1beta1"
|
|
||||||
rbac "k8s.io/api/rbac/v1beta1"
|
rbac "k8s.io/api/rbac/v1beta1"
|
||||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
@ -71,13 +71,13 @@ func CreateOrUpdateServiceAccount(client clientset.Interface, sa *v1.ServiceAcco
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CreateOrUpdateDeployment creates a Deployment if the target resource doesn't exist. If the resource exists already, this function will update the resource instead.
|
// CreateOrUpdateDeployment creates a Deployment if the target resource doesn't exist. If the resource exists already, this function will update the resource instead.
|
||||||
func CreateOrUpdateDeployment(client clientset.Interface, deploy *extensions.Deployment) error {
|
func CreateOrUpdateDeployment(client clientset.Interface, deploy *apps.Deployment) error {
|
||||||
if _, err := client.ExtensionsV1beta1().Deployments(deploy.ObjectMeta.Namespace).Create(deploy); err != nil {
|
if _, err := client.AppsV1beta2().Deployments(deploy.ObjectMeta.Namespace).Create(deploy); err != nil {
|
||||||
if !apierrors.IsAlreadyExists(err) {
|
if !apierrors.IsAlreadyExists(err) {
|
||||||
return fmt.Errorf("unable to create deployment: %v", err)
|
return fmt.Errorf("unable to create deployment: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := client.ExtensionsV1beta1().Deployments(deploy.ObjectMeta.Namespace).Update(deploy); err != nil {
|
if _, err := client.AppsV1beta2().Deployments(deploy.ObjectMeta.Namespace).Update(deploy); err != nil {
|
||||||
return fmt.Errorf("unable to update deployment: %v", err)
|
return fmt.Errorf("unable to update deployment: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -85,13 +85,13 @@ func CreateOrUpdateDeployment(client clientset.Interface, deploy *extensions.Dep
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CreateOrUpdateDaemonSet creates a DaemonSet if the target resource doesn't exist. If the resource exists already, this function will update the resource instead.
|
// CreateOrUpdateDaemonSet creates a DaemonSet if the target resource doesn't exist. If the resource exists already, this function will update the resource instead.
|
||||||
func CreateOrUpdateDaemonSet(client clientset.Interface, ds *extensions.DaemonSet) error {
|
func CreateOrUpdateDaemonSet(client clientset.Interface, ds *apps.DaemonSet) error {
|
||||||
if _, err := client.ExtensionsV1beta1().DaemonSets(ds.ObjectMeta.Namespace).Create(ds); err != nil {
|
if _, err := client.AppsV1beta2().DaemonSets(ds.ObjectMeta.Namespace).Create(ds); err != nil {
|
||||||
if !apierrors.IsAlreadyExists(err) {
|
if !apierrors.IsAlreadyExists(err) {
|
||||||
return fmt.Errorf("unable to create daemonset: %v", err)
|
return fmt.Errorf("unable to create daemonset: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := client.ExtensionsV1beta1().DaemonSets(ds.ObjectMeta.Namespace).Update(ds); err != nil {
|
if _, err := client.AppsV1beta2().DaemonSets(ds.ObjectMeta.Namespace).Update(ds); err != nil {
|
||||||
return fmt.Errorf("unable to update daemonset: %v", err)
|
return fmt.Errorf("unable to update daemonset: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -104,7 +104,7 @@ func DeleteDaemonSetForeground(client clientset.Interface, namespace, name strin
|
|||||||
deleteOptions := &metav1.DeleteOptions{
|
deleteOptions := &metav1.DeleteOptions{
|
||||||
PropagationPolicy: &foregroundDelete,
|
PropagationPolicy: &foregroundDelete,
|
||||||
}
|
}
|
||||||
return client.ExtensionsV1beta1().DaemonSets(namespace).Delete(name, deleteOptions)
|
return client.AppsV1beta2().DaemonSets(namespace).Delete(name, deleteOptions)
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateOrUpdateRole creates a Role if the target resource doesn't exist. If the resource exists already, this function will update the resource instead.
|
// CreateOrUpdateRole creates a Role if the target resource doesn't exist. If the resource exists already, this function will update the resource instead.
|
||||||
|
Loading…
Reference in New Issue
Block a user