mirror of
https://github.com/lingble/talos.git
synced 2025-11-28 20:03:48 +00:00
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:
committed by
Spencer Smith
parent
104af4380e
commit
3a4eaeeef0
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user