feat: upgrade kubernetes to 1.18

This PR will pull in the latest release of k8s 1.18 so we can start
validating it through our test suite.

Signed-off-by: Spencer Smith <robertspencersmith@gmail.com>
This commit is contained in:
Spencer Smith
2020-03-26 11:13:32 -04:00
committed by Spencer Smith
parent 104af4380e
commit 3a4eaeeef0
16 changed files with 77 additions and 98 deletions

View File

@@ -5,6 +5,7 @@
package kubernetes
import (
"context"
"encoding/json"
"encoding/pem"
"errors"
@@ -139,7 +140,7 @@ func NewTemporaryClientFromPKI(ca *x509.PEMEncodedCertificateAndKey, endpoint *u
// MasterIPs cordons and drains a node in one call.
func (h *Client) MasterIPs() (addrs []string, err error) {
endpoints, err := h.CoreV1().Endpoints("default").Get("kubernetes", metav1.GetOptions{})
endpoints, err := h.CoreV1().Endpoints("default").Get(context.TODO(), "kubernetes", metav1.GetOptions{})
if err != nil {
return nil, err
}
@@ -157,7 +158,7 @@ func (h *Client) MasterIPs() (addrs []string, err error) {
// LabelNodeAsMaster labels a node with the required master label.
func (h *Client) LabelNodeAsMaster(name string) (err error) {
n, err := h.CoreV1().Nodes().Get(name, metav1.GetOptions{})
n, err := h.CoreV1().Nodes().Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
return err
}
@@ -185,7 +186,7 @@ func (h *Client) LabelNodeAsMaster(name string) (err error) {
return fmt.Errorf("failed to create two way merge patch: %w", err)
}
if _, err := h.CoreV1().Nodes().Patch(n.Name, types.StrategicMergePatchType, patchBytes); err != nil {
if _, err := h.CoreV1().Nodes().Patch(context.TODO(), n.Name, types.StrategicMergePatchType, patchBytes, metav1.PatchOptions{}); err != nil {
if apierrors.IsConflict(err) {
return fmt.Errorf("unable to update node metadata due to conflict: %w", err)
}
@@ -208,7 +209,7 @@ func (h *Client) CordonAndDrain(node string) (err error) {
// Cordon marks a node as unschedulable.
func (h *Client) Cordon(name string) error {
err := retry.Exponential(30*time.Second, retry.WithUnits(250*time.Millisecond), retry.WithJitter(50*time.Millisecond)).Retry(func() error {
node, err := h.CoreV1().Nodes().Get(name, metav1.GetOptions{})
node, err := h.CoreV1().Nodes().Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
return retry.UnexpectedError(err)
}
@@ -219,7 +220,7 @@ func (h *Client) Cordon(name string) error {
node.Spec.Unschedulable = true
if _, err := h.CoreV1().Nodes().Update(node); err != nil {
if _, err := h.CoreV1().Nodes().Update(context.TODO(), node, metav1.UpdateOptions{}); err != nil {
return retry.ExpectedError(err)
}
@@ -235,14 +236,14 @@ func (h *Client) Cordon(name string) error {
// Uncordon marks a node as schedulable.
func (h *Client) Uncordon(name string) error {
err := retry.Exponential(30*time.Second, retry.WithUnits(250*time.Millisecond), retry.WithJitter(50*time.Millisecond)).Retry(func() error {
node, err := h.CoreV1().Nodes().Get(name, metav1.GetOptions{})
node, err := h.CoreV1().Nodes().Get(context.TODO(), name, metav1.GetOptions{})
if err != nil {
return retry.UnexpectedError(err)
}
if node.Spec.Unschedulable {
node.Spec.Unschedulable = false
if _, err := h.CoreV1().Nodes().Update(node); err != nil {
if _, err := h.CoreV1().Nodes().Update(context.TODO(), node, metav1.UpdateOptions{}); err != nil {
return retry.ExpectedError(err)
}
}
@@ -262,7 +263,7 @@ func (h *Client) Drain(node string) error {
FieldSelector: fields.SelectorFromSet(fields.Set{"spec.nodeName": node}).String(),
}
pods, err := h.CoreV1().Pods(metav1.NamespaceAll).List(opts)
pods, err := h.CoreV1().Pods(metav1.NamespaceAll).List(context.TODO(), opts)
if err != nil {
return fmt.Errorf("cannot get pods for node %s: %w", node, err)
}
@@ -301,7 +302,7 @@ func (h *Client) evict(p corev1.Pod, gracePeriod int64) error {
ObjectMeta: metav1.ObjectMeta{Namespace: p.GetNamespace(), Name: p.GetName()},
DeleteOptions: &metav1.DeleteOptions{GracePeriodSeconds: &gracePeriod},
}
err := h.CoreV1().Pods(p.GetNamespace()).Evict(pol)
err := h.CoreV1().Pods(p.GetNamespace()).Evict(context.TODO(), pol)
switch {
case apierrors.IsTooManyRequests(err):
@@ -320,7 +321,7 @@ func (h *Client) evict(p corev1.Pod, gracePeriod int64) error {
func (h *Client) waitForPodDeleted(p *corev1.Pod) error {
return retry.Constant(time.Minute, retry.WithUnits(3*time.Second)).Retry(func() error {
pod, err := h.CoreV1().Pods(p.GetNamespace()).Get(p.GetName(), metav1.GetOptions{})
pod, err := h.CoreV1().Pods(p.GetNamespace()).Get(context.TODO(), p.GetName(), metav1.GetOptions{})
switch {
case apierrors.IsNotFound(err):
return nil