Kubernetes: "рд╕рдорд╛рдкреНрддрд┐" рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрдЯрдХреЗ рд╣реБрдП рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛рдирд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рдорд╛рд░реНрдЪ 2018  ┬╖  180рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: kubernetes/kubernetes

рдореИрдВ v1.8.4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ рдХрд┐ рд╣рдЯрд╛рдП рдЧрдП рдирд╛рдо рд╕реНрдерд╛рди рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП "рд╕рдорд╛рдкреНрдд" рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА "kubectl delete namespace XXXX" рдХрд┐рдпрд╛ рдерд╛ред

kinbug prioritimportant-soon siapi-machinery

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@ рдореЗрдирдлреЛрд▓реНрдбрдПрдлрдЖрд░ , рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдкрдХреЗ рдЬреИрд╕рд╛ рд╣реА рдореБрджреНрджрд╛ рдерд╛ рдФрд░ рдореИрдВ рдЗрд╕реЗ
kubectl get namespace annoying-namespace-to-delete -o json > tmp.json
рдлрд┐рд░ tmp.json рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ "kubernetes" рдирд┐рдХрд╛рд▓реЗрдВ

curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json https://kubernetes-cluster-ip/api/v1/namespaces/annoying-namespace-to-delete/finalize

рдФрд░ рдпрд╣ рдЖрдкрдХреЗ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП,

рд╕рднреА 180 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

/ рд╕рд┐рдЧ рдПрдкреА-рдорд╢реАрдирд░реА

@ shean-guangchang рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

рдФрд░ рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рд╕реЗ рдмрд╛рд╣рд░, рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рднреА рд╕реАрдЖрд░рдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЯреАрдкреАрдЖрд░ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ред

/ рддрд░рд╣ рдмрдЧ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдПрдХ рдмрджрдорд╛рд╢ рдХреА рддреИрдирд╛рддреА рд╣реЛ рд╕рдХрддреА рд╣реИ:

тЮЬ  tmp git:(master) тЬЧ kubectl delete namespace rook
Error from server (Conflict): Operation cannot be fulfilled on namespaces "rook": The system is ensuring all content is removed from this namespace.  Upon completion, this namespace will automatically be purged by the system.
тЮЬ  tmp git:(master) тЬЧ 

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдирдХреЗ рд╕реАрдЖрд░рдбреА рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдирд╛ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдПрдкреАрдЖрдИ рд╕рд░реНрд╡рд░ рд▓реЙрдЧ рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ:

E0314 07:28:18.284942       1 crd_finalizer.go:275] clusters.rook.io failed with: timed out waiting for the condition
E0314 07:28:18.287629       1 crd_finalizer.go:275] clusters.rook.io failed with: Operation cannot be fulfilled on customresourcedefinitions.apiextensions.k8s.io "clusters.rook.io": the object has been modified; please apply your changes to the latest version and try again

рдореИрдВрдиреЗ рдЕрдм рдПрдХ рдЕрд▓рдЧ рдирд╛рдорд╕реНрдерд╛рди рдкрд░ рдмрджрдорд╛рд╢ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдХреНрд▓рд╕реНрдЯрд░ CRD рдирд╣реАрдВ рдмрдирд╛ рдкрд╛ рд░рд╣рд╛ рд╣реВрдБ:

тЮЬ  tmp git:(master) тЬЧ cat rook/cluster.yaml 
apiVersion: rook.io/v1alpha1
kind: Cluster
metadata:
  name: rook
  namespace: rook-cluster
spec:
  dataDirHostPath: /var/lib/rook-cluster-store
тЮЬ  tmp git:(master) тЬЧ kubectl create -f rook/
Error from server (MethodNotAllowed): error when creating "rook/cluster.yaml": the server does not allow this method on the requested resource (post clusters.rook.io)

рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ CRD рдХреЛ рдХрднреА рд╕рд╛рдл рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

тЮЬ  tmp git:(master) тЬЧ kubectl get customresourcedefinitions clusters.rook.io -o yaml
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  creationTimestamp: 2018-02-28T06:27:45Z
  deletionGracePeriodSeconds: 0
  deletionTimestamp: 2018-03-14T07:36:10Z
  finalizers:
  - customresourcecleanup.apiextensions.k8s.io
  generation: 1
  name: clusters.rook.io
  resourceVersion: "9581429"
  selfLink: /apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions/clusters.rook.io
  uid: 7cd16376-1c50-11e8-b33e-aeba0276a0ce
spec:
  group: rook.io
  names:
    kind: Cluster
    listKind: ClusterList
    plural: clusters
    singular: cluster
  scope: Namespaced
  version: v1alpha1
status:
  acceptedNames:
    kind: Cluster
    listKind: ClusterList
    plural: clusters
    singular: cluster
  conditions:
  - lastTransitionTime: 2018-02-28T06:27:45Z
    message: no conflicts found
    reason: NoConflicts
    status: "True"
    type: NamesAccepted
  - lastTransitionTime: 2018-02-28T06:27:45Z
    message: the initial names have been accepted
    reason: InitialNamesAccepted
    status: "True"
    type: Established
  - lastTransitionTime: 2018-03-14T07:18:18Z
    message: CustomResource deletion is in progress
    reason: InstanceDeletionInProgress
    status: "True"
    type: Terminating
тЮЬ  tmp git:(master) тЬЧ 

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рди рд░рд╛рдЬреНрдп рдореЗрдВ рдПрдХ рд╡рд┐рдЦрдВрдбрди рдирд╛рдо рд╕реНрдерд╛рди рд╣реИ:

тЮЬ  tmp git:(master) тЬЧ kubectl delete namespace fission
Error from server (Conflict): Operation cannot be fulfilled on namespaces "fission": The system is ensuring all content is removed from this namespace.  Upon completion, this namespace will automatically be purged by the system.
тЮЬ  tmp git:(master) тЬЧ kubectl get pods -n fission     
NAME                          READY     STATUS        RESTARTS   AGE
storagesvc-7c5f67d6bd-72jcf   0/1       Terminating   0          8d
тЮЬ  tmp git:(master) тЬЧ kubectl delete pod/storagesvc-7c5f67d6bd-72jcf --force --grace-period=0
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
Error from server (NotFound): pods "storagesvc-7c5f67d6bd-72jcf" not found
тЮЬ  tmp git:(master) тЬЧ kubectl describe pod -n fission storagesvc-7c5f67d6bd-72jcf
Name:                      storagesvc-7c5f67d6bd-72jcf
Namespace:                 fission
Node:                      10.13.37.5/10.13.37.5
Start Time:                Tue, 06 Mar 2018 07:03:06 +0000
Labels:                    pod-template-hash=3719238268
                           svc=storagesvc
Annotations:               <none>
Status:                    Terminating (expires Wed, 14 Mar 2018 06:41:32 +0000)
Termination Grace Period:  30s
IP:                        10.244.2.240
Controlled By:             ReplicaSet/storagesvc-7c5f67d6bd
Containers:
  storagesvc:
    Container ID:  docker://3a1350f6e4871b1ced5c0e890e37087fc72ed2bc8410d60f9e9c26d06a40c457
    Image:         fission/fission-bundle:0.4.1
    Image ID:      docker-pullable://fission/fission-bundle<strong i="6">@sha256</strong>:235cbcf2a98627cac9b0d0aae6e4ea4aac7b6e6a59d3d77aaaf812eacf9ef253
    Port:          <none>
    Command:
      /fission-bundle
    Args:
      --storageServicePort
      8000
      --filePath
      /fission
    State:          Terminated
      Exit Code:    0
      Started:      Mon, 01 Jan 0001 00:00:00 +0000
      Finished:     Mon, 01 Jan 0001 00:00:00 +0000
    Ready:          False
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /fission from fission-storage (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from fission-svc-token-zmsxx (ro)
Conditions:
  Type           Status
  Initialized    True 
  Ready          False 
  PodScheduled   True 
Volumes:
  fission-storage:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  fission-storage-pvc
    ReadOnly:   false
  fission-svc-token-zmsxx:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  fission-svc-token-zmsxx
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:          <none>
тЮЬ  tmp git:(master) тЬЧ 

рд╡рд┐рдЦрдВрдбрди рднреА CRDs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реЗ рд╕рд╛рдл рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

@ рд╢реЙрди-рдЧреБрдВрдЧрдЪрд╛рдВрдЧ - рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдерд╛ред рдореИрдВрдиреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЗ рддрд╣рдд рд╕рдм рдХреБрдЫ рдбрд┐рд▓реАрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, "рд╣реЗрд▓реНрдо" рд╕реЗ рд╕рдм рдХреБрдЫ рдбрд┐рд▓реАрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдорд╛рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЬреЛ рдХреБрдЫ рднреА рдХрд┐рдпрд╛ рд╣реИ рдЙрд╕рдХрд╛ "рд╕рдиреНрджреВрдХ", "рдЯрд┐рд▓рд░" рдФрд░ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ (рдореИрдВ рд╣реЗрд▓реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреВрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╕рдиреНрджреВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреИрдХ-рдЕрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЙрдирдХреЗ рдХрд╣рдиреЗ рдкрд░ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рджреВрд╕рд░реЗ рдкрд░ рд╣рд╛рде, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрд╕рдВрднрд╡ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд▓реЙрдЧ рдирд╣реАрдВ рд╣реИрдВред

рдпрджрд┐ рдпрд╣ рдмрджрдорд╛рд╢ рд╣реИ, рддреЛ рдЗрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ: https://github.com/rook/rook/issues/1488#issuecomment -365058080

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЫреЛрдЯреА рдмрд╛рдд рд▓рдЧрддреА рд╣реИ рдХрд┐ рдПрдХ рдирд╛рдордЪреАрди рд░рд╛рдЬреНрдп рдореЗрдВ рдПрдХ рдирд╛рдо рд╕реНрдерд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ @barakAtSoluto рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рди рд╡рд╛рддрд╛рд╡рд░рдг (рд╕рдиреНрджреВрдХ рдФрд░ рд╣реЗрд▓реНрдо) рд╣реИ рдФрд░ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИред рдорд╛рд╕реНрдЯрд░реНрд╕ рдХреЛ рд╢реБрджреНрдз рдХрд░рдирд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рддрдп рдирд╣реАрдВ рдерд╛ред рдлрд┐рд░ рднреА рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдкрд░ рдЕрдЯрдХ рдЧрдпрд╛ред

рдореИрдВ рднреА рдерд╛ рдХрд┐ рдЬрдм рд╕рдорд╕реНрдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ред рдореБрдЭреЗ рдЖрдЦрд┐рд░рдХрд╛рд░ рдПрдХ рдирдпрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдирд╛ рдкрдбрд╝рд╛ ...ред
рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░реЗрдВ - рдбрд┐рдлрд╝реЙрд▓реНрдЯ, рдХреНрдпреВрдм-рд╕рд┐рд╕реНрдЯрдо / рдкрдмреНрд▓рд┐рдХ рдФрд░ рдмреИрдХрдЕрдк рд╕реЗ рд╕рднреА рд╕рдиреНрджреВрдХ рд╕рдВрдмрдВрдзреА рдирд╛рдорд╕реНрдерд╛рди рдФрд░ рдЗрд╕реЗ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ ...

рдореИрдВ рдЗрд╕реЗ рднреА рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ, рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ 1.8.4 рд╕реЗ 1.9.6 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдореБрдЭреЗ рдпрд╣ рднреА рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд▓реЙрдЧ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ

1.10.1 :( рдкрд░ рд╡рд╣реА рдЕрдВрдХ

1.9.6 рдкрд░ рд╕рдорд╛рди рдЕрдВрдХ

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдХреБрдЫ рдкреЙрдбреНрд╕ рдХреЗ рд▓рдЯрдХрдиреЗ рдХреЗ рдХрд╛рд░рдг рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрд╛ред рдореИрдВрдиреЗ рдЙрди рд╕рднреА рдкрд░ --grace-period = 0 --force рдХреЗ рд╕рд╛рде рдПрдХ рдбрд┐рд▓реАрдЯ рдХрд┐рдпрд╛ рдФрд░ рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рдХреЗ рдмрд╛рдж рдирд╛рдордкрдЯреНрдЯ рднреА рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ред

рдЕрд░реЗ,

рдореБрдЭреЗ рдпрд╣ рдмрд╛рд░-рдмрд╛рд░ рдорд┐рд▓рд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╣реИ рдЬрдм рдлрд╛рдЗрдирд▓ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛрддреА рд╣реИред

рдпрджрд┐ рдХреЛрдИ рдирд╛рдо рд╕реНрдерд╛рди рдЕрдЯрдХ рдЧрдпрд╛ рд╣реИ, рддреЛ kubectl get namespace XXX -o yaml рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЙрд╕ рдкрд░ рдХреЛрдИ рдЕрдВрддрд┐рдо рд░реВрдк рд╣реИред рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рдлрд╛рдЗрдирд▓рд┐рдЬрд╝рд░ (рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА рдкрд╛рд╕ рдХрд░рдХреЗ) рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рдлрд┐рд░ рдирд╛рдо рд╕реНрдерд╛рди рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

@xetys рдХреНрдпрд╛ рдпрд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ? рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ "рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕" рдирд╛рдо рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдлрд╛рдЗрдирд▓ рд╣реИред

рдпрд╣ рдЕрдЬреАрдм рд╣реИ, рдореИрдВрдиреЗ рдРрд╕рд╛ рдлрд╛рдЗрдирд▓ рдХрднреА рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИред рдореИрдВ рд╕рд┐рд░реНрдл рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмреЛрд▓ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдРрд╕рд╛ рдХрдИ рдмрд╛рд░ рдкреНрд░реЛрдбрдХреНрд╢рди рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдЕрднреА рднреА рдЬреАрд╡рд┐рдд рд╣реИ

1.10.5 рдкрд░ рд╕рдорд╛рди рдЕрдВрдХред рдореИрдВрдиреЗ рдмрд┐рдирд╛ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рд╕рднреА рд╕рд▓рд╛рд╣ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдореИрдВ рдлрд▓реА рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рд▓реЗрдХрд┐рди рдирд╛рдо рд╕реНрдерд╛рди рдЕрднреА рднреА рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИред

рджрд░рдЕрд╕рд▓, ns рднреА рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдбрд┐рд▓реАрдЯ рд╣реЛ рдЧрдпрд╛ред

рдпрд╣ рд╕рдордЭрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХрдорд╛рддреНрд░ рдлрд╛рдЗрдирд▓ рд╣реИ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ред рдореЗрд░реЗ рдкрд╛рд╕ рдбрд╛рдпрдирд╛рдорд┐рдХ рд╡реЗрдмрд╣реВрдХ рднреА рд╣реИрдВ, рдХреНрдпрд╛ рдпреЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ?

@xetys рдареАрдХ рд╣реИ, рдЕрдВрдд рдореЗрдВ рдореИрдВрдиреЗ рдЙрд╕ рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рдЕрдВрджрд░ рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдкрд░ рдЖрдкрдХреА рдЪрд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЙрдирдХреЗ рдкрд╛рд╕ рдХреБрдЫ рдХрд╕реНрдЯрдо рдлрд╛рдЗрдирд▓ рдереЗ рдЬреЛ рд╢рд╛рдпрдж рдЕрдм рдореМрдЬреВрдж рдирд╣реАрдВ рдереЗ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рдирд╣реАрдВ рд╕рдХрд╛ред рдЬрдм рдореИрдВрдиреЗ рдЙрд╕ рдлрд╛рдЗрдирд▓ рдХреЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рддреЛ рд╡реЗ рдЧрд╛рдпрдм рд╣реЛ рдЧрдП рдФрд░ рдЗрд╕реА рддрд░рд╣ рдиреЗрдорд╕реНрдкреЗрд╕ рдХрд┐рдпрд╛ред рдзрдиреНрдпрд╡рд╛рдж! :)

EKS 1.10.3 рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдПрдХ рд╣реА рдореБрджреНрджрд╛:

Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.3", GitCommit:"2bba0127d85d5a46ab4b778548be28623b32d0b0", GitTreeState:"clean", BuildDate:"2018-05-28T20:13:43Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

рдПрдХ рдирдВрдЧреЗ рдзрд╛рддреБ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛрдиреЗ:

Client Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.0", GitCommit:"91e7b4fd31fcd3d5f436da26c980becec37ceefe", GitTreeState:"clean", BuildDate:"2018-06-27T20:17:28Z", GoVersion:"go1.10.2", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.1", GitCommit:"b1b29978270dc22fecc592ac55d903350454310a", GitTreeState:"clean", BuildDate:"2018-07-17T18:43:26Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}

рдореЗрд░рд╛ рдирд╛рдо рд╕реНрдерд╛рди рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

apiVersion: v1
kind: Namespace
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"creneaux-app","namespace":""}}
  name: creneaux-app
spec:
  finalizers:
  - kubernetes

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреВрд╕рд░рд╛ рдирд╛рдорд╕реНрдерд╛рди рд╣реИ рдЬреЛ рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдЕрдкрдиреЗ рдирд╛рдорд╕реНрдерд╛рди рдХреА рд╕рднреА рдЪреАрдЬрд╝реЛрдВ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдБ: https://github.com/kubernetes/kubectl/issues/151#issuecomment -402003022

рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрдирд▓реА рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП kubectl delete рдпрд╛ kubectl edit рдХрд░рддреЗ рд╣реИрдВред

рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рдЪрд╛рд▓ рдЪрд▓реА рдЧрдИ ...

рдЬрдм рдореИрдВ kubectl edit namespace annoying-namespace-to-delete рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдлрд╛рдЗрдирд▓рд░реНрд╕ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реВрдВ, рддреЛ рдЬрдм рдореИрдВ kubectl get -o yaml рд╕рд╛рде рдЪреЗрдХ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рд╡реЗ рдлрд┐рд░ рд╕реЗ рдЬреБрдбрд╝ рдЬрд╛рддреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рдЖрдкрдиреЗ @adampl рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛, рддреЛ рдореБрдЭреЗ рдХреЛрдИ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рдорд┐рд▓рд╛ ( --ignore-not-found рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рд╕рдВрд╕рд╛рдзрди рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдирд╣реАрдВ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ)ред

@ рдореЗрдирдлреЛрд▓реНрдбрдПрдлрдЖрд░ , рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдкрдХреЗ рдЬреИрд╕рд╛ рд╣реА рдореБрджреНрджрд╛ рдерд╛ рдФрд░ рдореИрдВ рдЗрд╕реЗ
kubectl get namespace annoying-namespace-to-delete -o json > tmp.json
рдлрд┐рд░ tmp.json рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ "kubernetes" рдирд┐рдХрд╛рд▓реЗрдВ

curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json https://kubernetes-cluster-ip/api/v1/namespaces/annoying-namespace-to-delete/finalize

рдФрд░ рдпрд╣ рдЖрдкрдХреЗ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП,

@ рд╕рд╛рд▓рд╢рдГ рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛! рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП: рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рд╣рдо рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреА рдкреНрд░рд╢рдВрд╕рд╛ рдХрд░реЗрдВрдЧреЗ

рд╕рдорд╕реНрдпрд╛ v1.11.1 рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдбреЙрдХреНрдпреВрд╡рд┐рдХ рдХреА рдПрдХ рдЕрдЯрдХреА рд╣реБрдИ рд░реИрдВрдЪрд░ / рд╣реЗрд▓реНрдо рддреИрдирд╛рддреА рдереАред рдореБрдЭреЗ рдкрд╣рд▓реА рдмрд╛рд░ @siXor рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдП рдЧрдП рдлрд▓реА рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж @slassh рдХреА рд╕рд▓рд╛рд╣ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛

@slassh рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕-рдХреНрд▓рд╕реНрдЯрд░-рдЖрдИрдкреА рдХреИрд╕реЗ рджреЗрдЦреЗрдВ? рдореИрдВ рдПрдХ рдиреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдХреА рдЬрдЧрд╣ рддреИрдирд╛рдд рдЖрдИрдкреА, рдФрд░ рдпрд╣ 404 рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВред

hi @jiuchongxiao , kubernetes-рдХреНрд▓рд╕реНрдЯрд░-рдЖрдИрдкреА рд╕реЗ рдореЗрд░рд╛ рдорддрд▓рдм рдЖрдкрдХреЗ рдиреЛрдб рдорд╛рд╕реНрдЯрд░реНрд╕ рдЖрдИрдкреА рдореЗрдВ рд╕реЗ рдПрдХ рд╕реЗ рд╣реИред
рдЦреЗрдж рд╣реИ рдЕрдЧрд░ рдпрд╣ рднреНрд░рд╛рдордХ рд╣реИ!

рдпрджрд┐ рдЖрдк 'kubectl рдкреНрд░реЙрдХреНрд╕реА' рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрд░реНрд▓ рдХреЛ http://127.0.0.1 : 8001 / api / v1 / namepaces / рдХрд╖реНрдЯрдкреНрд░рдж-рдиреЗрдорд╕реНрдкреЗрд╕-рд╕реЗ-рдбрд┐рд▓реАрдЯ / рдлрд╛рдЗрдирд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рддрдХ рдореИрдВрдиреЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рдореБрдЭреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдирд╣реАрдВ рдорд┐рд▓рд╛ред

рдЕрдЪреНрдЫрд╛ рд╕реБрдЭрд╛рд╡ @ 2stacksред рдмрд╕ https http ред

рдореИрдВ рдЕрднреА рднреА 1.11.2 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВред

рдкреНрд░рдЬрдирди рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдВрджрд░реНрдн рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╕реАрдЖрд░рдбреА рдХреЗ рд╕рд╛рде рджреЗрдЦрд╛ред рд╕реАрдЖрд░рдбреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╣рдЯрд╛рдХрд░, рдореБрдЭреЗ рдПрдХ рдЕрдЬреАрдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдорд┐рд▓рд╛, рдЗрд╕рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд╡рд╛рд▓реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣рдЯрд╛рдП рдирд╣реАрдВ рдЧрдП рдереЗред рдореИрдВрдиреЗ рдиреЛрдЯрд┐рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд▓реЛрдкрди рдЬрд╛рд░реА рдХрд┐рдпрд╛ред рддрдм рдореИрдВрдиреЗ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ kubectl delete all --all -n my-namespace рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ред рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдирд╛рдо рд╕реНрдерд╛рди рд╡рд┐рд▓реЛрдкрди рдЕрдЯрдХ рдЧрдпрд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдорджрдж рдХрд░рддрд╛ рд╣реИред

рд▓реЙрдЧ рдХреЛ рджреЗрдЦрдХрд░ рдореБрдЭреЗ рд╕рд┐рд░реНрдл рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд╕рдорд╕реНрдпрд╛ рдирд┐рдпрдВрддреНрд░рдХ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдЕрд╕реНрд╡рд╕реНрде рд╣реЛрдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдереАред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдПрдХ рдмрдЧ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рдереАред рдЬрдм рдирд┐рдпрдВрддреНрд░рдХ рдкреНрд░рдмрдВрдзрдХ рдлрд┐рд░ рд╕реЗ рдКрдкрд░ рдЧрдпрд╛ рддреЛ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рд╛рдл рд╣реЛ рдЧрдпрд╛ред

@ рд╕рд╛рд▓рд╢рдГ рдкрд░рдлреЗрдХреНрдЯ рдЙрдкрд╛рдп! рдЖрдкрдХрд╛ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!!!!

рдореИрдВ рднреА 1.10.x рдХреЗ рд╕рд╛рде рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @slassh рдПрдХ рдЯрд┐рдкреНрдкрдгреА рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореБрджреНрджреЗ рдХреЛ рдЫреБрдкрд╛рддрд╛ рд╣реИред рдирд╛рдо рд╕реНрдерд╛рди Terminating рдкрд░ рдХреНрдпреЛрдВ рдЕрдЯрдХреЗ рд╣реБрдП рд╣реИрдВ?

рд╣рдордиреЗ рдЕрдкрдиреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдлрдВрд╕реЗ рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдЦреЛрдЬрд╛ (@palmerabollo)

рдЬрдм рдХрд┐рд╕реА рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ kubernetes , рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдПрдкреАрдЖрдИ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдВрддрд░рд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред

kubectl api-resources рдЪрд▓рд╛рдПрдВ, рдпрджрд┐ рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рддрд░рд╣ рд░рд┐рдЯрд░реНрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХрд╕реНрдЯрдо API рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред

error: unable to retrieve the complete list of server APIs: metrics.k8s.io/v1beta1: the server is currently unable to handle the request

рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП kubectl get apiservices v1beta1.metrics.k8s.io -o yaml рдЪрд▓рд╛рдПрдБред

status:
  conditions:
  - lastTransitionTime: 2018-10-15T08:14:15Z
    message: endpoints for service/metrics-server in "kube-system" have no addresses
    reason: MissingEndpoints
    status: "False"
    type: Available

рдЙрдкрд░реЛрдХреНрдд рддреНрд░реБрдЯрд┐ рдореЗрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреНрд░реИрд╢рд▓реВрдкрдмреИрдХрдСрдл рдХреЗ рдХрд╛рд░рдг рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдЕрдиреНрдп рдХрд╕реНрдЯрдо рдПрдкреАрдЖрдИ рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧрд╛ред

рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдЬреИрд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рд░рдирдЯрд╛рдЗрдо рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП kube-system рдореЗрдВ рдЕрдкрдиреА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред

рдореИрдВ v1.11.3 рдкрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЕрдВрддрд┐рдо рдирд╛рдо рдкрд░ рдХреЗрд╡рд▓ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдореМрдЬреВрдж рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ред

spec:
  finalizers:
  - kubernetes

@slassh рдПрдХ рд▓рд╛рдЦ рдзрдиреНрдпрд╡рд╛рдж, рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!
рдореБрдЭреЗ рдЕрдкрдиреЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕рдиреНрджреВрдХ, рдЯрд┐рд▓рд░ рдФрд░ рдХреБрдмреЗрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛рдПрдБ рдХреБрдмреЗрдж рдХреА рдПрдкреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗ рд░рд╣реА рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рджреВрд╕рд░реЗ рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рд╡рд┐рд▓реЛрдкрди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХреНрдпреЛрдВ рдХрд░рддреА рд╣реИред

@javierprovecho рдореИрдВ рдХреЗрд╡рд▓ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЪреВрдВрдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реЗрд╡рд╛ рдФрд░

status:
  conditions:
  - lastTransitionTime: 2018-08-24T08:59:36Z
    message: service/metrics-server in "kube-system" is not present
    reason: ServiceNotFound
    status: "False"
    type: Available

рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдЕрд╡рд╕реНрдерд╛ рд╕реЗ рдХреИрд╕реЗ рдЙрдмрд░реЗрдВ?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ ... рдореБрдЭреЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ / рдПрдЪрдкреАрдП рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рджреВрд░ рд╕реЗ рднреА _everything_ рдХреЛ рд╣рдЯрд╛рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдлрд┐рд░ рдкреВрд░реЗ рдирд┐рдпрдВрддреНрд░рдг рд╡рд┐рдорд╛рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдкрдбрд╝рд╛ (рдЗрд╕рдХреЗ рд╕рднреА рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЛ рдиреАрдЪреЗ рдЙрддрд╛рд░рдирд╛ рдкрдбрд╝рд╛, рдЙрдиреНрд╣реЗрдВ рд╡рд╛рдкрд╕ рдмреВрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗред) рдЗрд╕рдореЗрдВ apiservice рдХреЛ рд╣рдЯрд╛рдирд╛ рд╢рд╛рдорд┐рд▓ рдерд╛ред v1beta1.metrics.k8s.io рд╕реНрд╡рдпрдВред

@ 2rs2ts

$ kubectl delete apiservice v1beta1.metrics.k8s.io

рдЧреИрд░-рдХрд╛рдордХрд╛рдЬ metrics API рд╕реЗрд╡рд╛ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рд╕реЗ рдирд┐рдпрдВрддреНрд░рдХ-рдкреНрд░рдмрдВрдзрдХ рдмрд╛рд╕реА рдирд╛рдо рд╕реНрдерд╛рди (рдУрдВ) рдХреЛ рд╣рдЯрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред

рдирд┐рдпрдВрддреНрд░рдг рд╡рд┐рдорд╛рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред

@antoineco рдирд╣реАрдВ, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдерд╛; рдореИрдВрдиреЗ рдПрдкрд┐рд╕ рд╕рд░реНрд╡рд┐рд╕ рдХреЛ рдбрд┐рд▓реАрдЯ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдХрд╛рдлреА рджреЗрд░ рдЗрдВрддрдЬрд╛рд░ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рдореИрдВрдиреЗ рдХрдВрдЯреНрд░реЛрд▓ рдкреНрд▓реЗрди рдХреЛ рджреЛрдмрд╛рд░рд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рддрдм рддрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЛ рдбрд┐рд▓реАрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдкрд╣рд▓реЗ, рдЫреЛрдЯреА рдХреЙрдлрд╝реА рд▓реЗрдВ рдФрд░ рдЖрд░рд╛рдо рдХрд░реЗрдВ, рдЕрдм рдЕрдкрдиреЗ k8s рдорд╛рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдкрд░ рдЬрд╛рдПрдБ

  1. kubectl рдХреНрд▓рд╕реНрдЯрд░-рдЬрд╛рдирдХрд╛рд░реА
    рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдорд╛рд╕реНрдЯрд░ https: // localhost : 6443 рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ
    KubeDNS https: // localhost : 6443 / api / v1 / namespaces / kube-system / services / kube- dns: dns / xy рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ

рдХреНрд▓рд╕реНрдЯрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдбреАрдмрдЧ рдФрд░ рдирд┐рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 'kubectl рдХреНрд▓рд╕реНрдЯрд░-рдЬрд╛рдирдХрд╛рд░реА рдбрдВрдк' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

  1. рдЕрдм рдХреНрдпреВрдм-рдкреНрд░реЙрдХреНрд╕реА рдЪрд▓рд╛рдПрдВ
    kubectl рдкреНрд░реЙрдХреНрд╕реА рдФрд░
    127.0.0.1:8001 рдкрд░ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдирд╛

рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдИрдбреА рд╕рд╣реЗрдЬреЗрдВ :)

  1. рдЕрдкрдирд╛ рдирд╛рдо-рд╕реНрдерд╛рди рдЦреЛрдЬреЗрдВ рдЬрд┐рд╕рдиреЗ рддрдп рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╣рдЯрд╛рдП рдирд╣реАрдВ рдЬрд╛рдиреЗ рдХреА :) рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдкрд╢реБ-рдкреНрд░рдгрд╛рд▓реА рд╣реЛрдЧреА
    kubectl ns рдорд┐рд▓рддрд╛ рд╣реИ
    рдорд╡реЗрд╢реА-рд╡реНрдпрд╡рд╕реНрдерд╛ рд╕рдорд╛рдкреНрдд 1 рдбреА

рдЗрд╕реЗ рдлрд╛рдЗрд▓ рдореЗрдВ рдбрд╛рд▓реЗрдВ

  1. kubectl рдХреЛ namepace рдорд╡реЗрд╢реА-рд╕рд┐рд╕реНрдЯрдо -o json> tmp.json рдорд┐рд▓рддрд╛ рд╣реИ
  1. рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рдлрд╛рдЗрдирд▓ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ
    },
    "рдХрд▓реНрдкрдирд╛": {
    "рдлрд╛рдЗрдирд▓": [
    "Kubernetes"
    ]
    },
    рд╕рдВрдкрд╛рджрди рдХреЗ рдмрд╛рдж рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП like
    },
    "рдХрд▓реНрдкрдирд╛": {
    "рдлрд╛рдЗрдирд▓": [
    ]
    },
    рд╣рдо рд▓рдЧрднрдЧ рд╡рд╣рд╛рдБ ЁЯСН

curl -k -H "рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░: рдЕрдиреБрдкреНрд░рдпреЛрдЧ / json" -X PUT --data- рдмрд╛рдЗрдирд░реА @ tmp.json http://127.0.0.1 : 8001 / рдПрдкреАрдЖрдИ / v1 / рдирд╛рдорд╕реНрдерд╛рди / $ {NAMESPAD} / рдЕрдВрддрд┐рдо рд░реВрдк

рдФрд░ рдпрд╣ ЁЯСН рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИ

рдЕрд░реЗ, рдлрд╛рдЗрдирд▓реА kubernetes рдПрдХ рдХрд╛рд░рдг рд╕реЗ рд╣реИред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдореАрдЯреНрд░рд┐рдХ рдПрдкреАрдЖрдИ рд╕реЗрд╡рд╛ рдирд╛рдо рдерд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рд╣реЛ, рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрдиреЗ рдХрдВрдЯреНрд░реЛрд▓ рдкреНрд▓реЗрди рдХреЛ рджреЗрдЦрдХрд░ рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВред рдмрдЧ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд┐рдП рдмрд┐рдирд╛, рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдЕрд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдмрдирд╛рдП рдЧрдП рд╕рд╛рдорд╛рди рдХреЛ рдЫреЛрдбрд╝ рджреЗрдирд╛ рдЬреЛ рдЕрдм рд╣рдЯрд╛рдиреЗ рдпреЛрдЧреНрдп рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдЙрдкрдпреЛрдЧ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдЕрднреА рднреА рдЦреБрд▓рд╛ рд╣реИ:
рдореЗрд░реЗ рдорд┐рдиреАрдмреНрдпреВрдм рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рднреАрддрд░ "рдХреЛрдИ рдирд╣реАрдВ" рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдореЗрдЬрдмрд╛рди рджреНрд╡рд╛рд░рд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рд╕реЗ рдЬрд╛рдЧрдиреЗ рдХреЗ рдмрд╛рдж рд╣реБрдЖред

рдореЗрд░реА рдзрд╛рд░рдгрд╛:
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рдПрдХ рд╕рдХреНрд╖рдо рд╕реНрд╡реИрдк рдХрд░реЗрдЧрд╛ред

рдЬреЛ рдзрд╛рд░рдгрд╛ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ:
рдкреНрд░рднрд╛рд╡рд┐рдд рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╕реНрд╡реИрдк рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рд░реНрдл рдЕрдиреБрдорд╛рди рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдФрд░ рдореЗрд░реЗ рд╕реНрдерд╛рдиреАрдп рд╕реЗрдЯрдЕрдк рдХреЗ рд╕рд╛рде рдЗрд╕ рдмрдЧ рдореЗрдВ рдЙрддрд░рдиреЗ рд╡рд╛рд▓рд╛: рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдмреБрд░рд╛ рд╣реИ ред

рдкрд╣рд▓реЗ, рдЫреЛрдЯреА рдХреЙрдлрд╝реА рд▓реЗрдВ рдФрд░ рдЖрд░рд╛рдо рдХрд░реЗрдВ, рдЕрдм рдЕрдкрдиреЗ k8s рдорд╛рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдкрд░ рдЬрд╛рдПрдБ

  1. kubectl рдХреНрд▓рд╕реНрдЯрд░-рдЬрд╛рдирдХрд╛рд░реА
    рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдорд╛рд╕реНрдЯрд░ https: // localhost : 6443 рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ
    KubeDNS https: // localhost : 6443 / api / v1 / namespaces / kube-system / services / kube- dns: dns / xy рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ

рдХреНрд▓рд╕реНрдЯрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдбреАрдмрдЧ рдФрд░ рдирд┐рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 'kubectl рдХреНрд▓рд╕реНрдЯрд░-рдЬрд╛рдирдХрд╛рд░реА рдбрдВрдк' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

  1. рдЕрдм рдХреНрдпреВрдм-рдкреНрд░реЙрдХреНрд╕реА рдЪрд▓рд╛рдПрдВ
    kubectl рдкреНрд░реЙрдХреНрд╕реА рдФрд░
    127.0.0.1:8001 рдкрд░ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдирд╛

рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдИрдбреА рд╕рд╣реЗрдЬреЗрдВ :)

  1. рдЕрдкрдирд╛ рдирд╛рдо-рд╕реНрдерд╛рди рдЦреЛрдЬреЗрдВ рдЬрд┐рд╕рдиреЗ рддрдп рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╣рдЯрд╛рдП рдирд╣реАрдВ рдЬрд╛рдиреЗ рдХреА :) рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдкрд╢реБ-рдкреНрд░рдгрд╛рд▓реА рд╣реЛрдЧреА
    kubectl ns рдорд┐рд▓рддрд╛ рд╣реИ
    рдорд╡реЗрд╢реА-рд╡реНрдпрд╡рд╕реНрдерд╛ рд╕рдорд╛рдкреНрдд 1 рдбреА

рдЗрд╕реЗ рдлрд╛рдЗрд▓ рдореЗрдВ рдбрд╛рд▓реЗрдВ

  1. kubectl рдХреЛ namepace рдорд╡реЗрд╢реА-рд╕рд┐рд╕реНрдЯрдо -o json> tmp.json рдорд┐рд▓рддрд╛ рд╣реИ
  1. рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рдлрд╛рдЗрдирд▓ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ
    },
    "рдХрд▓реНрдкрдирд╛": {
    "рдлрд╛рдЗрдирд▓": [
    "Kubernetes"
    ]
    },
    рд╕рдВрдкрд╛рджрди рдХреЗ рдмрд╛рдж рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП like
    },
    "рдХрд▓реНрдкрдирд╛": {
    "рдлрд╛рдЗрдирд▓": [
    ]
    },
    рд╣рдо рд▓рдЧрднрдЧ рд╡рд╣рд╛рдБ ЁЯСН

curl -k -H "рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░: рдЕрдиреБрдкреНрд░рдпреЛрдЧ / json" -X PUT --data- рдмрд╛рдЗрдирд░реА @ tmp.json http://127.0.0.1 : 8001 / рдПрдкреАрдЖрдИ / v1 / рдирд╛рдорд╕реНрдерд╛рди / $ {NAMESPAD} / рдЕрдВрддрд┐рдо рд░реВрдк

рдФрд░ рдпрд╣ ЁЯСН рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИ

рдорд╣рд╛рди!!
рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдпрджрд┐ рд╣рдо рдЕрдкрдиреЗ gcloud рдЙрджрд╛рд╣рд░рдгреЛрдВ (рдЬреИрд╕реЗ рдиреЛрдбреНрд╕ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛) рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рд╕рдордп-рд╕рдордп рдкрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЪрд▓рд╛рддрд╛ рд╣реВрдВред рдпрд╣ рдкреБрд░рд╛рдиреЗ рдиреЛрдб рдХреЛ gcloud instances list рд╕реЗ рдПрдХ рдирдП рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди k8s рдирд╛рдо рдХреЗ рдкреЙрдбреНрд╕ рдореЗрдВ рдкреЙрдбреНрд╕ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ:

Reason:                    NodeLost
Message:                   Node <old node> which was running pod <pod> is unresponsive

рдпрд╣ рддрдм рдПрдХ рдЕрдЬреНрдЮрд╛рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдлрд▓реА рдЫреЛрдбрд╝рддрд╛ рд╣реИ:

$ kubectl get po
NAME                               READY     STATUS    RESTARTS   AGE
<pod>                              2/2       Unknown   0          39d

рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рдирд╛рдо рд╕реНрдерд╛рди рдХрднреА рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдлрд╛рдЗрдирд▓ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдпрджрд┐ рдЯрд░реНрдорд┐рдиреЗрдЯрд┐рдВрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрдЧ рд╣реИ рдЬреЛ UNKNOWN рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреЙрдбреНрд╕ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрд╛ рдпрджрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП )ред

рдпрджрд┐ рд╣рдо рдЕрдкрдиреЗ gcloud рдЙрджрд╛рд╣рд░рдгреЛрдВ (рдЬреИрд╕реЗ рдиреЛрдбреНрд╕ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛) рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рд╕рдордп-рд╕рдордп рдкрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЪрд▓рд╛рддрд╛ рд╣реВрдВред рдпрд╣ рдкреБрд░рд╛рдиреЗ рдиреЛрдб рдХреЛ gcloud instances list рд╕реЗ рдПрдХ рдирдП рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди k8s рдирд╛рдо рдХреЗ рдкреЙрдбреНрд╕ рдореЗрдВ рдкреЙрдбреНрд╕ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ:

Reason:                    NodeLost
Message:                   Node <old node> which was running pod <pod> is unresponsive

рдпрд╣ рддрдм рдПрдХ рдЕрдЬреНрдЮрд╛рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдлрд▓реА рдЫреЛрдбрд╝рддрд╛ рд╣реИ:

$ kubectl get po
NAME                               READY     STATUS    RESTARTS   AGE
<pod>                              2/2       Unknown   0          39d

рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рдирд╛рдо рд╕реНрдерд╛рди рдХрднреА рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдлрд╛рдЗрдирд▓ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдпрджрд┐ рдЯрд░реНрдорд┐рдиреЗрдЯрд┐рдВрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрдЧ рд╣реИ рдЬреЛ UNKNOWN рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреЙрдбреНрд╕ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрд╛ рдпрджрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП )ред

рд╢рд╛рдВрдд рдпрд╣ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИ
рдЖрдкрдХреЛ рд░рдЦрд░рдЦрд╛рд╡ рдореЛрдб рдореЗрдВ рдиреЛрдбреНрд╕ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд░рдЦрд░рдЦрд╛рд╡ рдореЛрдб рдореЗрдВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕рднреА рдкреЙрдбреНрд╕ рдХреЛ рдЦрд╛рд▓реА рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдлрд┐рд░ рдпреВ рдХреЛ рд╣рдЯрд╛ / рдЕрдкрдЧреНрд░реЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдЗрд╕реЗ рджреЗрдЦреЗрдВ d https://kubernetes.io/docs/concepts/workloads/controllers/garbage-collection/ ,
рд╕рдВрд╕рд╛рдзрди рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛.рдлрд┐рдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рдЕрдкреНрд░рдпреБрдХреНрдд crd рдХреЛ рд╣рдЯрд╛ рджреЗрдВ ad рдЖрдк рдЗрд╕реЗ рдмрд▓ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ

рд▓реЗрдХрд┐рди kubernetes рдлрд╛рдЗрдирд▓ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ? рдХреНрдпрд╛ рдХреЛрдИ рдЦрддрд░рд╛ рд╣реИ рдХрд┐ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЗрд╕ рд╣реИрдХ рд╕реЗ рдареАрдХ рд╕реЗ рд╕рд╛рдл рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ?

рдмрджрдорд╛рд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реА https://github.com/rook/rook/blob/master/Documentation/ceph-teardown.md

curl -k -H "рдХрдВрдЯреЗрдВрдЯ-рдЯрд╛рдЗрдк: рдПрдкреНрд▓реАрдХреЗрд╢рди / рдЬрд╕рди" -X PUT --data- рдмрд╛рдЗрдирд░реА @ tmp.json https: // kubernetes-рдХреНрд▓рд╕реНрдЯрд░-рдЖрдИрдкреА / рдПрдкреА / v1 / рдиреЗрдорд╕реНрдкреЗрд╕ / рдХрд╖реНрдЯрдкреНрд░рдж-рдиреЗрдорд╕реНрдкреЗрд╕-рдЯреВ-рдбрд┐рд▓реАрдЯ / рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ

рд╕рд░реНрд╡рд░ рд╕реЗ рддреНрд░реБрдЯрд┐ (NotFound): рдиреЗрдорд╕реНрдкреЗрд╕ "рдХрд╖реНрдЯрдкреНрд░рдж-рдиреЗрдорд╕реНрдкреЗрд╕-рдЯреВ-рдбрд┐рд▓реАрдЯ" рдирд╣реАрдВ рдорд┐рд▓рд╛

рдкрд╣рд▓реЗ, рдЫреЛрдЯреА рдХреЙрдлрд╝реА рд▓реЗрдВ рдФрд░ рдЖрд░рд╛рдо рдХрд░реЗрдВ, рдЕрдм рдЕрдкрдиреЗ k8s рдорд╛рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдкрд░ рдЬрд╛рдПрдБ

  1. kubectl рдХреНрд▓рд╕реНрдЯрд░-рдЬрд╛рдирдХрд╛рд░реА
    рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдорд╛рд╕реНрдЯрд░ https: // localhost : 6443 рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ
    KubeDNS https: // localhost : 6443 / api / v1 / namespaces / kube-system / services / kube- dns: dns / xy рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ

рдХреНрд▓рд╕реНрдЯрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдбреАрдмрдЧ рдФрд░ рдирд┐рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 'kubectl рдХреНрд▓рд╕реНрдЯрд░-рдЬрд╛рдирдХрд╛рд░реА рдбрдВрдк' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

  1. рдЕрдм рдХреНрдпреВрдм-рдкреНрд░реЙрдХреНрд╕реА рдЪрд▓рд╛рдПрдВ
    kubectl рдкреНрд░реЙрдХреНрд╕реА рдФрд░
    127.0.0.1:8001 рдкрд░ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдирд╛

рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдИрдбреА рд╕рд╣реЗрдЬреЗрдВ :)

  1. рдЕрдкрдирд╛ рдирд╛рдо-рд╕реНрдерд╛рди рдЦреЛрдЬреЗрдВ рдЬрд┐рд╕рдиреЗ рддрдп рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╣рдЯрд╛рдП рдирд╣реАрдВ рдЬрд╛рдиреЗ рдХреА :) рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдкрд╢реБ-рдкреНрд░рдгрд╛рд▓реА рд╣реЛрдЧреА
    kubectl ns рдорд┐рд▓рддрд╛ рд╣реИ
    рдорд╡реЗрд╢реА-рд╡реНрдпрд╡рд╕реНрдерд╛ рд╕рдорд╛рдкреНрдд 1 рдбреА

рдЗрд╕реЗ рдлрд╛рдЗрд▓ рдореЗрдВ рдбрд╛рд▓реЗрдВ

  1. kubectl рдХреЛ namepace рдорд╡реЗрд╢реА-рд╕рд┐рд╕реНрдЯрдо -o json> tmp.json рдорд┐рд▓рддрд╛ рд╣реИ
  1. рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рдлрд╛рдЗрдирд▓ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ
    },
    "рдХрд▓реНрдкрдирд╛": {
    "рдлрд╛рдЗрдирд▓": [
    "Kubernetes"
    ]
    },
    рд╕рдВрдкрд╛рджрди рдХреЗ рдмрд╛рдж рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП like
    },
    "рдХрд▓реНрдкрдирд╛": {
    "рдлрд╛рдЗрдирд▓": [
    ]
    },
    рд╣рдо рд▓рдЧрднрдЧ рд╡рд╣рд╛рдБ ЁЯСН

curl -k -H "рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░: рдЕрдиреБрдкреНрд░рдпреЛрдЧ / json" -X PUT --data- рдмрд╛рдЗрдирд░реА @ tmp.json http://127.0.0.1 : 8001 / рдПрдкреАрдЖрдИ / v1 / рдирд╛рдорд╕реНрдерд╛рди / $ {NAMESPAD} / рдЕрдВрддрд┐рдо рд░реВрдк

рдФрд░ рдпрд╣ ЁЯСН рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИ

рдЕрдорд╛рдиреНрдп рдорд╛рди: "рд╕рдВрдкрд╛рджрд┐рдд рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рд╡рд┐рдлрд▓ рд╣реБрдИ рдорд╛рдиреНрдпрддрд╛": рдорд╛рдиреНрдпрдХрд░рдг (рдирд╛рдо рд╕реНрдерд╛рди)

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдорд╛рдкреНрддрд┐ рдореЗрдВ рдХрдИ рдирд╛рдо рд╕реНрдерд╛рди рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

kubectl get ns | grep Terminating | awk '{print $1}' | gxargs  -n1 -- bash -c 'kubectl get ns "$0" -o json | jq "del(.spec.finalizers[0])" > "$0.json"; curl -k -H "Content-Type: application/json" -X PUT --data-binary @"$0.json" "http://127.0.0.1:8001/api/v1/namespaces/$0/finalize" '

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рдЯрд╛рдП рдЧрдП рд╕рднреА рдирд╛рдорд╕реНрдерд╛рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Terminating ред

рдЖрдкрдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП kubectl proxy рд░рдирд┐рдВрдЧ рдФрд░ jq ред

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдПрдкреА рд╕реЗрд╡рд╛ рдиреАрдЪреЗ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕ рддреНрд░реБрдЯрд┐ рд▓реЙрдЧ рдХреЛ рд╡рд░реНрдмреЛрдЬрд╝ рд▓реЙрдЧрд┐рдВрдЧ рд╕реЗ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ

kubectl delete ns <namespace-name> -v=7
.......
I0115 11:03:25.548299   12445 round_trippers.go:383] GET https://<api-server-url>/apis/metrics.k8s.io/v1beta1?timeout=32s
I0115 11:03:25.548317   12445 round_trippers.go:390] Request Headers:
I0115 11:03:25.548323   12445 round_trippers.go:393]     Accept: application/json, */*
I0115 11:03:25.548329   12445 round_trippers.go:393]     User-Agent: kubectl/v1.11.3 (darwin/amd64) kubernetes/a452946
I0115 11:03:25.580116   12445 round_trippers.go:408] Response Status: 503 Service Unavailable in 31 milliseconds

рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдПрдкрд┐рд╕ рд╕рд░реНрд╡рд┐рд╕ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд┐рд▓реЛрдкрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдПрдкреНрд░рд┐рд╕ рд╕рд░реНрд╡рд┐рд╕ рдкрд░ рдХреНрдпреЛрдВ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдЬрд╛рдирдиреЗ рдХрд╛ рднреА рдЗрд░рд╛рджрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдПрдкрд┐рд╕реЗрд╡рд░реНрдХ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд┐рд▓реЛрдкрди рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдПрдкрд┐рд╕ рд╕рд░реНрд╡рд┐рд╕ рдкрд░ рдХреНрдпреЛрдВ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ,

@manojbadam рдХреНрдпреЛрдВрдХрд┐

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рд▓рдЧрд╛рддрд╛рд░ рдЗрд╕рдореЗрдВ рднрд╛рдЧ рд░рд╣рд╛ рдерд╛, рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдЫреЛрдЯреЗ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛:

https://github.com/ctron/kill-kube-ns/blob/master/kill-kube-ns

рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, JSON рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ "рдХреБрдмреЗрдХреЗрд▓ рдкреНрд░реЙрдХреНрд╕реА" рдХреЛ рдареАрдХ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ, ...

рдореБрдЭреЗ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рд▓рдЧрд╛рддрд╛рд░ рдЗрд╕рдореЗрдВ рднрд╛рдЧ рд░рд╣рд╛ рдерд╛, рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдЫреЛрдЯреЗ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛:

https://github.com/ctron/kill-kube-ns/blob/master/kill-kube-ns

рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, JSON рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ "рдХреБрдмреЗрдХреЗрд▓ рдкреНрд░реЙрдХреНрд╕реА" рдХреЛ рдареАрдХ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ, ...

рдореБрдЭреЗ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

рдореЗрд░реЗ рд╣реАрд░реЛ! <3

рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднреА рднрд╛рдЧ рдЧрдпрд╛ред рдореИрдВ Google Kubernetes рдЗрдВрдЬрди рдкрд░ рд╣реВрдВ рдФрд░ Kubernetes рд╕рдореВрд╣реЛрдВ рдХреЛ рд╕реНрдкрд┐рди рдХрд░рдиреЗ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдЕрдВрджрд░ рдиреЗрдорд╕реНрдкреЗрд╕ рдФрд░ рдкреЙрдбреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП Terraform рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред terraform destroy рдЪрд▓рдиреЗ рдХреЗ рдХреБрдЫ рд╕рдордп рдмрд╛рдж рд╕рдорд╕реНрдпрд╛ рд╢реБрд░реВ рд╣реБрдИред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рдореБрджреНрджрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЯреЗрд░рд╛рдлреЙрд░реНрдо рд╡рд┐рдирд╛рд╢ рдХреЛ рдЕрдВрдЬрд╛рдо рджреЗрддрд╛ рд╣реИред рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдкрд╣рд▓реЗ рдиреЛрдб рдкреВрд▓ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдиреЗрдорд╕реНрдкреЗрд╕ рдФрд░ рдкреЙрдб рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди (рдХреЗрд╡рд▓) рдиреЛрдб рдкреВрд▓ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдХрд╛рд░рдг, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдЯреВрдЯ рдЧрдпрд╛, рдФрд░ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдиреЗрдорд╕реНрдкреЗрд╕ рд╡рд┐рд▓реЛрдкрди "рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП" рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ред

@FooBarWidget рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ :(

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рд▓рдЧрд╛рддрд╛рд░ рдЗрд╕рдореЗрдВ рднрд╛рдЧ рд░рд╣рд╛ рдерд╛, рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдЫреЛрдЯреЗ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛:

https://github.com/ctron/kill-kube-ns/blob/master/kill-kube-ns

рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, JSON рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ "рдХреБрдмреЗрдХреЗрд▓ рдкреНрд░реЙрдХреНрд╕реА" рдХреЛ рдареАрдХ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ, ...

рдореБрдЭреЗ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

[root@k8s-master ~]# curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json https://172.*****:6443/api/v1/namespaces/rook-ceph/finalize
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {

},
"status": "Failure",
"message": "namespaces "rook-ceph" is forbidden: User "system:anonymous" cannot update namespaces/finalize in the namespace "rook-ceph"",
"reason": "Forbidden",
"details": {
"name": "rook-ceph",
"kind": "namespaces"
},
"code": 403

рдореБрдЭреЗ рдПрдХ рд░рд┐рдЯрд░реНрди рдХреЛрдб 403 рдорд┐рд▓рд╛, рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП :(

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рд▓рдЧрд╛рддрд╛рд░ рдЗрд╕рдореЗрдВ рднрд╛рдЧ рд░рд╣рд╛ рдерд╛, рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдЫреЛрдЯреЗ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛:
https://github.com/ctron/kill-kube-ns/blob/master/kill-kube-ns
рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, JSON рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ "рдХреБрдмреЗрдХреЗрд▓ рдкреНрд░реЙрдХреНрд╕реА" рдХреЛ рдареАрдХ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ, ...
рдореБрдЭреЗ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

[root@k8s-master ~]# curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json https://172.*****:6443/api/v1/namespaces/rook-ceph/finalize
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {

},
"status": "Failure",
"message": "namespaces "rook-ceph" is forbidden: User "system:anonymous" cannot update namespaces/finalize in the namespace "rook-ceph"",
"reason": "Forbidden",
"details": {
"name": "rook-ceph",
"kind": "namespaces"
},
"code": 403

рдореБрдЭреЗ рдПрдХ рд░рд┐рдЯрд░реНрди рдХреЛрдб 403 рдорд┐рд▓рд╛, рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП :(

Thx рднрдЧрд╡рд╛рди, рд╕рдорд╛рдкреНрддрд┐ рдирд╛рдо рд╕реНрдерд╛рди рдЕрдВрдд рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдЪрд╛рд▓ рд╣реИред

NAMESPACE=rook-ceph
kubectl proxy &
kubectl get namespace $NAMESPACE -o json |jq '.spec = {"finalizers":[]}' >temp.json
curl -k -H "Content-Type: application/json" -X PUT --data-binary @temp.json 127.0.0.1:8001/api/v1/namespaces/$NAMESPACE/finalize

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреЛрдИ рдореЗрдЯреНрд░рд┐рдХреНрд╕-рд╕реЗрд╡рд╛ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣реА рд╣реИред

рдореИрдВ k8s рдХреЗ рд╕рд╛рде digitalocean рдФрд░ gitlab рдСрдЯреЛ рдбреЗрдкреЙрдкреНрд╕ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд░рд╣рд╛ рд╣реВрдВред рдореЗрд░реА рдзрд╛рд░рдгрд╛ рдХреБрдЫ рдбрд┐рдЬрд┐рдЯрд▓ рдмреНрд▓реЙрдм рд╕реНрдЯреЛрд░реЗрдЬ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдпрд╛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рд╣рд╛рд░ рдЧрдпрд╛ рд╣реВрдВред

@mingxingshi tx рдПрдХ рдирд╛рдо рд╕реНрдерд╛рди рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬреЛ рдЪрд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЖрдкрдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рдХрд┐рдпрд╛ред

рд╡рд╛рд╣, рдЖрдЦрд┐рд░рдХрд╛рд░ рдЗрд╕рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдорд┐рд▓ рдЧрдпрд╛ред рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @mingxingshi !

рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдерд╛:

kubectl delete apiservice v1beta1.metrics.k8s.io

рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдореБрдЭреЗ рдпрд╣рд╛рдБ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП:

рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╕рд╛рдзрди рдХреЗ рд╕рд╛рде terraform apply рдХрд░ рд░рд╣рд╛ рдерд╛:

resource "helm_release" "servicer" {
  name      = "servicer-api"
  // n.b.: this is a local chart just for this terraform project
  chart     = "charts/servicer-api"
  namespace = "servicer"
  ...
}

рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рдкрддрд╡рд╛рд░ newb рд╣реВрдБ рдФрд░ рд╣реИ рдХрд┐ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ рдирд╛рдо рд╕реНрдерд╛рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЙрд╕ рдореЗрдВ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдерд╛ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдерд╛ servicer ред рдЗрд╕рд╕реЗ рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдФрд░ k8s рдЗрд╕ рдмреБрд░реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖ рдЧрдП рдЬрд╣рд╛рдВ рдЯреЗрд░рд╛рдлреЙрд░реНрдо рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдлрд┐рд░ k8s servicer рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЛ Terminating рд░рд╛рдЬреНрдп рдореЗрдВ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред @Mingxingshi рдиреЗ рдЬреЛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ рдЙрд╕реЗ рдХрд░рддреЗ рд╣реБрдП рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╕рдВрд╕рд╛рдзрди рдирд╣реАрдВ рдЬреБрдбрд╝реЗ рдереЗред

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдореЗрд░реЗ рд▓рд┐рдП рддрдм рд╣реЛ рд░рд╣реА рд╣реИ рдЬрдм рдореИрдВрдиреЗ рдЙрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдЬрд┐рд╕рдиреЗ рдирд╛рдо рд╕реНрдерд╛рди рдмрдирд╛ рджрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред

рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреЛрд╣рд░рд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░реЛрдореЗрдерд┐рдпрд╕-рдСрдкрд░реЗрдЯрд░ рдХреЛ рдХреНрд▓реЛрди рдХрд░реЗрдВред рдлрд┐рд░:

cd prometheus-operator/contrib/kube-prometheus
kubectl create -f manifests/ --validate=false
 ... wait ...
kubectl delete namespace monitoring

рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИред рдпрджрд┐, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ kubectl delete -f manifests/ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рд╕рдлрд╛рдИ рд╕рдлрд▓ рд╣реЛрддреА рд╣реИред

рд╣рд╛рдБ, рдкреНрд░реЛрдореЗрдерд┐рдпрд╕-рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд▓рдЯрдХрд╛ рдерд╛ред kubectl delete -f manifests/ рдХреЛ рдЕрдирд╕реНрдЯрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рд╕реАрдЖрд░рдбреА рдореЗрдВ рдХреБрдЫ рдлрд╛рдЗрдирд▓ рд╣реИрдВ рдЬреЛ рджреБрд░реНрд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдпрд╣ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдХреБрдмреЗрд░рдиреЗрдЯ рдХреА рдЧрд▓рддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЛ рдЕрдкрд░рд╛рдзреА рдХреЛ рдвреВрдВрдврдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЗ рд▓реИрдВрдЧреНрдЯ рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдХреЗ рдХрдИ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢реЗрд╖ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдЗрд╕рдХреЗ рдиреАрдЪреЗ рддрдХ рдкрд╣реБрдБрдЪрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдПрдХ kubernetes noob рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣рд╛рдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ 2 рдирд╛рдорд╕реНрдерд╛рди рднреА рд╣реИрдВ рдЬреЛ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдлрдВрд╕ рдЧрдП рд╣реИрдВред рдореЗрд░рд╛ рдХреБрдмреЗрд░рдиреЗрдЯ рд╕реЗрдЯрдЕрдк IBM рдХреНрд▓рд╛рдЙрдб рдкреНрд░рд╛рдЗрд╡реЗрдЯ 3.1.2 рдХрдореНрдпреБрдирд┐рдЯреА рдПрдбрд┐рд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ

kubectl version
Client Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.4+icp", GitCommit:"3f5277fa129f05fea532de48284b8b01e3d1ab4e", GitTreeState:"clean", BuildDate:"2019-01-17T13:41:02Z", GoVersion:"go1.10.4", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.4+icp", GitCommit:"3f5277fa129f05fea532de48284b8b01e3d1ab4e", GitTreeState:"clean", BuildDate:"2019-01-17T13:41:02Z", GoVersion:"go1.10.4", Compiler:"gc", Platform:"linux/amd64"}

kubectl cluster-info
Kubernetes master is running at https://ip
catalog-ui is running at https://ip/api/v1/namespaces/kube-system/services/catalog-ui:catalog-ui/proxy
Heapster is running at https://ip/api/v1/namespaces/kube-system/services/heapster/proxy
image-manager is running at https://ip/api/v1/namespaces/kube-system/services/image-manager:image-manager/proxy
CoreDNS is running at https://ip/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
metrics-server is running at https://ip/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
platform-ui is running at https://ip/api/v1/namespaces/kube-system/services/platform-ui:platform-ui/proxy

kubectl get nodes
NAME          STATUS                     ROLES                          AGE   VERSION
ip1    Ready,SchedulingDisabled   etcd,management,master,proxy   23h   v1.12.4+icp
ip2   Ready                      worker                         23h   v1.12.4+icp
ip3   Ready                      worker                         23h   v1.12.4+icp

рдореЗрд░реЗ рдкрд╛рд╕ рджреЛ рдирд╛рдорд╕реНрдерд╛рди рд╣реИрдВ рдЬреЛ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИрдВ

kubectl get ns
NAME           STATUS        AGE
my-apps       Terminating   21h
cert-manager   Active        23h
default        Active        23h
istio-system   Active        23h
kube-public    Active        23h
kube-system    Active        23h
platform       Active        22h
psp-example    Terminating   18h
services       Active        22h

рдЬрдм рдореИрдВ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдмрддрд╛рдП рдЧрдП рдлрд╛рдЗрдирд▓ рдХреЛ рдЬрд╛рдВрдЪрддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдХреЗрд╡рд▓ kubernetes ред

kubectl get ns my-apps -o yaml
apiVersion: v1
kind: Namespace
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"my-apps"}}
  creationTimestamp: 2019-04-10T18:23:55Z
  deletionTimestamp: 2019-04-11T15:24:24Z
  name: my-apps
  resourceVersion: "134914"
  selfLink: /api/v1/namespaces/my-apps
  uid: ccb0398d-5bbd-11e9-a62f-005056ad5350
spec:
  finalizers:
  - kubernetes
status:
  phase: Terminating

рднрд▓реЗ рд╣реА рдореИрдВрдиреЗ рдлрд╛рдЗрдирд▓ рд╕реЗ kubernetes рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╡рд░реНрдгрд┐рдд json / api рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдХрд╛рдо рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рд╕рднреА рдиреЛрдбреНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдореИрдВрдиреЗ рдмрд▓ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рднреА рдХреА рдФрд░ рд╡рд╣ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

kubectl delete namespace my-apps --force --grace-period 0
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
Error from server (Conflict): Operation cannot be fulfilled on namespaces "my-apps": The system is ensuring all content is removed from this namespace.  Upon completion, this namespace will automatically be purged by the system.

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд╛рдо рд╕реНрдерд╛рди рдмрджрдирд╛рдо рд╣реИ, рдореЗрд░реЗ рд▓рд┐рдП kubectl -n rook-ceph patch cephclusters.ceph.rook.io rook-ceph -p '{"metadata":{"finalizers": []}}' --type=merge рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкреНрд░реЗрд╖рдХ: https://github.com/rook/rook/blob/master/Documentation/ceph-teardown.md

@ рдореЗрдирдлреЛрд▓реНрдбрдПрдлрдЖрд░ , рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдкрдХреЗ рдЬреИрд╕рд╛ рд╣реА рдореБрджреНрджрд╛ рдерд╛ рдФрд░ рдореИрдВ рдЗрд╕реЗ
kubectl get namespace annoying-namespace-to-delete -o json > tmp.json
рдлрд┐рд░ tmp.json рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ "kubernetes" рдирд┐рдХрд╛рд▓реЗрдВ

curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json https://kubernetes-cluster-ip/api/v1/namespaces/annoying-namespace-to-delete/finalize

рдФрд░ рдпрд╣ рдЖрдкрдХреЗ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП,

рдореБрдЭреЗ рдЖрдкрдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдореБрдЭреЗ рдЕрдЧрд▓реЗ рдЪрд░рдг рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

~ curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json https://39.96.4.11:6443/api/v1/namespaces/istio-system/finalize
{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {

  },
  "status": "Failure",
  "message": "namespaces \"istio-system\" is forbidden: User \"system:anonymous\" cannot update resource \"namespaces/finalize\" in API group \"\" in the namespace \"istio-system\"",
  "reason": "Forbidden",
  "details": {
    "name": "istio-system",
    "kind": "namespaces"
  },
  "code": 403

@ рдореЗрдирдлреЛрд▓реНрдбрдПрдлрдЖрд░ , рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдкрдХреЗ рдЬреИрд╕рд╛ рд╣реА рдореБрджреНрджрд╛ рдерд╛ рдФрд░ рдореИрдВ рдЗрд╕реЗ
kubectl get namespace annoying-namespace-to-delete -o json > tmp.json
рдлрд┐рд░ tmp.json рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ "kubernetes" рдирд┐рдХрд╛рд▓реЗрдВ
curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json https://kubernetes-cluster-ip/api/v1/namespaces/annoying-namespace-to-delete/finalize
рдФрд░ рдпрд╣ рдЖрдкрдХреЗ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП,

рдореБрдЭреЗ рдЖрдкрдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдореБрдЭреЗ рдЕрдЧрд▓реЗ рдЪрд░рдг рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

~ curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json https://39.96.4.11:6443/api/v1/namespaces/istio-system/finalize
{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {

  },
  "status": "Failure",
  "message": "namespaces \"istio-system\" is forbidden: User \"system:anonymous\" cannot update resource \"namespaces/finalize\" in API group \"\" in the namespace \"istio-system\"",
  "reason": "Forbidden",
  "details": {
    "name": "istio-system",
    "kind": "namespaces"
  },
  "code": 403

рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: https://github.com/ctron/kill-kube-ns/blob/master/kill-kube-ns ред

yup https://github.com/ctron/kill-kube-ns/blob/master/kill-kube-ns рдЪрд╛рд▓

set -eo pipefail

die() { echo "$*" 1>&2 ; exit 1; }

need() {
    which "$1" &>/dev/null || die "Binary '$1' is missing but required"
}

# checking pre-reqs

need "jq"
need "curl"
need "kubectl"

PROJECT="$1"
shift

test -n "$PROJECT" || die "Missing arguments: kill-ns <namespace>"

kubectl proxy &>/dev/null &
PROXY_PID=$!
killproxy () {
    kill $PROXY_PID
}
trap killproxy EXIT

sleep 1 # give the proxy a second

kubectl get namespace "$PROJECT" -o json | jq 'del(.spec.finalizers[] | select("kubernetes"))' | curl -s -k -H "Content-Type: application/json" -X PUT -o /dev/null --data-binary @- http://localhost:8001/api/v1/namespaces/$PROJECT/finalize && echo "Killed namespace: $PROJECT"

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд╛рдорд╕реНрдерд╛рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдЯрд╛рдП рдирд╣реАрдВ рдЧрдП рд╣реИрдВред
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, kubectl get ns рд╣рдЯрд╛рдП рдЧрдП рдирд╛рдорд╕реНрдерд╛рди рдирд╣реАрдВ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди kubectl get all -n <namespace> рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рдзреНрд╡рдирд┐ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред
рдореИрдВрдиреЗ рдиреЛрдбреНрд╕ рдкрд░ рдЬрд╛рдБрдЪ рдХреА рдФрд░ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдЕрднреА рднреА рдЪрд▓ рд░рд╣реЗ рдереЗ ...

@glouis рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЙрдкрд░реНрдпреБрдХреНрдд рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╛рдЗрдирд▓ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рдкрд╛рд╕ рдЙрди рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд▓реЛрдкрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИред

рдЗрддрдиреЗ рд╕рд╛рд░реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдордЭреЗ рдмрд┐рдирд╛ рдЖрдБрдЦ рдмрдВрдж рдХрд░рдХреЗ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреА рд╡рдХрд╛рд▓рдд рдХрд░рддреЗ рджреЗрдЦрдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреБрдЦрдж рд╣реИред рдпрд╣ рдмреЗрд╣рдж рдмрджрд╕реВрд░рдд рд╣реИ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЯрди рдХреЗ рдмрдЪреЗ рд╣реБрдП рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЫреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИред @javierprovecho рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдКрдкрд░ рдХрд░ рджрд┐рдпрд╛ рдерд╛, рдФрд░ @ рд▓рд┐рдЧрд┐рдЯ рдиреЗ рдПрдХ рдЕрдиреНрдп рдЧрд┐рдЯрд╣рдм рдореБрджреНрджреЗ рдореЗрдВ рднреА рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ ред

рдЯреВрдЯреА рд╣реБрдИ v1beta1.metrics.k8s.io API рд╕реЗрд╡рд╛ рдХреЛ рдареАрдХ рдХрд░рдирд╛ , рдпрд╛ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

# 73405 рднреА рджреЗрдЦреЗрдВ

рдореИрдВ рджреВрд╕рд░рд╛ @antoineco рд╕рдВрджреЗрд╢ред рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд▓рдЧрд╛рддрд╛рд░ рдирд╛рдо рд╕реНрдерд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рдереЗред рд▓рдЧрднрдЧ рдПрдХ рдорд╣реАрдиреЗ рдХреЗ рдмрд╛рдж рд╕рднреА рдбреЙрдХрдЯрд░ рдбреЗрдореЙрди рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ рдлреНрд░реАрдЬ рд╣реЛ рдЧрдПред рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдкреАрдЫреЗ рдЫреЛрдбрд╝рдиреЗ рд╕реЗ рдмрд╣реБрдд рдмрдбрд╝реА рд╕реНрдореГрддрд┐ рд▓реАрдХ рдмрдирд╛рдИред

рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рдж, рдФрд░ рдЗрди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдврд╝рдХрд░, рдпрд╣ рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрд░реЛрд╕ рдЧреНрд░рд╛рдлрд╛рдирд╛ рд╕реНрдЯреИрдХ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрди рдкрд░рд┐рднрд╛рд╖рд╛ рдирд┐рдХрд▓рд╛ред рд╕реАрдЖрд░рдбреА рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рд╕реЗ рдЙрд╕ рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕рд╛рдзрди рджрд┐рдЦрд╛рдИ рджрд┐рдПред рдореИрдВ рдмрд╣реБрдд рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдерд╛ рдХрд┐ рд╕реАрдЖрд░рдбреА рдХреЗ рдирд╛рдо рдореЗрдВ рдпрд╣ рдирд╛рдо рд╕реНрдерд╛рди рдерд╛ рдЬреЛ рдЕрдЯрдХ рдЧрдпрд╛ рдерд╛ред

рдпрд╣ рднреА рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдПрдХ рдЕрдЯрдХ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЕрдзрд┐рдХ рдирд╛рдорд╕реНрдерд╛рди рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд╛рдо рд╕реНрдерд╛рди A рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ CRD рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдЕрдЯрдХ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдПрдХ рдирд╛рдо рд╕реНрдерд╛рди B рд╣реИ, рдЬреЛ рдХрд┐ рдЕрдЯрдХ CRD рдХреЗ рд╕рд╛рде рд╣реИ, A рдХреЗ рд╕рднреА рд╕рдВрд╕рд╛рдзрди B рдХреЗ рдЪрд▓реЗ рдЬрд╛рдиреЗ рддрдХ рдЗрдзрд░-рдЙрдзрд░ рдЪрд┐рдкрдХреЗ рд░рд╣реЗрдВрдЧреЗред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд╣рд░ рдмрд╛рд░ рдЪрд╛рд░реЛрдВ рдУрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдПрдХ рдЯрди рдЫреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдирд╛рдорд╕реНрдерд╛рди рдП рдкрд░ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛ред

рдЬреЛ рдЪреАрдЬ рдЕрднреА рднреА рдореБрдЭреЗ рдорд╛рд░ рд░рд╣реА рд╣реИ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд▓реЙрдЧ рдХрд╛ рдирд╛рдо рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реАрдЖрд░рдкреА рдХреЛ рд╣рдЯрд╛рдиреЗ рдкрд░ рдХрд┐рд╕реА рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИ, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рдПрдХ рдШрдВрдЯрд╛ рдмрд┐рддрд╛рдирд╛ рдерд╛ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдерд╛ рдХрд┐ CRD рдХреНрдпрд╛ рд╣реИред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рддреЛ рдореБрдЭреЗ рд╕рдордп рдХреА рдПрдХ рдмрдбрд╝реА рд░рд╛рд╢рд┐ рдЦрд░реНрдЪ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЕрдЯрдХреЗ рд╣реБрдП рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдЧрд╛ рдЬреЛ рдХрд┐ рднрдпрд╛рдирдХ рд╣реЛрдЧрд╛ред

рдкреНрд░реЛрдбрдХреНрд╢рди рдХреНрд▓рд╕реНрдЯрд░реНрд╕ рдХреЗ рд▓рд┐рдП @jecafarelli рдЕрдЪреНрдЫрд╛ рд╕рдВрдХреЗрддред рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдЕрдиреНрдпрдерд╛ рдорд╛рд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛ред рдореБрдЭреЗ рдпрд╣ рднреА рдкрддрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдмрд╛рдж рдореЗрдВ рдкреВрд░реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдКрдВрдЧрд╛ред

рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдиреЛрдЯрд┐рди рдиреЗ рдореБрдЭреЗ рдЕрдиреНрдп рдорд╛рдзреНрдпрдореЛрдВ рд╕реЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреАред

рдЗрд╕ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░реА рдорджрдж рдХреА: https://success.docker.com/article/kubernetes-namespace-stuck-in-terminating
рдпрд╣ kubectl edit namespace rook-ceph рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИред рд╣рдЯрд╛рдП рдЧрдП _ "рдлрд╛рдЗрдирд▓" "_" рдХреЗ рд╕рд╛рде рдореИрдВ PUT рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рддрдХ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рдерд╛

рдареАрдХ рд╣реИ рддреЛ рдореИрдВ рдХреЛрд░реЛрд╕ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдЗрд╕ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛, рдФрд░ рдореИрдВрдиреЗ рдереЛрдбрд╝рд╛ рдЧрд╣рд░рд╛ рдЦреЛрджрд╛ред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рд╡рд╛рдЗрдб рд░рд┐рд╕реЛрд░реНрд╕ рдбреЗрдлрд┐рдирд┐рд╢рди рдХреА рд╡рдЬрд╣ рд╕реЗ рд╣реИ рдЬреЛ рдирд╛рдо рд╕реНрдерд╛рди рдкрд░ рд╣реИ, рдФрд░ рдЖрдЧреЗ рд╢рд╛рдпрдж рдпрд╣ рдЗрд╕реЗ рд╣рдЯрд╛ рдирд╣реАрдВ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЛрд░реЛрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрд╡реЗрд░реА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдПрдкреАрд╕рд░реНрд╡рд░ рд▓реЙрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реАрдВ рдЬреЛ рдПрдХ рдПрдкреАрдЖрдИ рд╕рдореВрд╣ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИрдВред рдореИрдВрдиреЗ рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕рдВрджрд░реНрднрд┐рдд рдореБрджреНрджреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рддреНрд╡рд░рд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЙрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП ns рдЕрдЯрдХ рдЧрдП рд╣реИрдВред

рдмреАрдорд╛рд░ рд╢рд╛рдпрдж рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕рд┐рд░реНрдл рдЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рдФрд░ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдП рдЧрдП рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдирд╛рдорд╛рдВрдХрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВред

for ns in `kubectl get ns --field-selector status.phase=Terminating -o name | cut -d/ -f2`; 
do
  echo "apiservice under namespace $ns"
  kubectl get apiservice -o json |jq --arg ns "$ns" '.items[] |select(.spec.service.namespace != null) | select(.spec.service.namespace == $ns) | .metadata.name ' --raw-output
  echo "api resources under namespace $ns"
  for resource in `kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get -o name -n $ns`; 
  do 
    echo $resource
  done;
done

рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж @jecafarelli , рдЖрдкрдиреЗ рдореБрдЭреЗ рдореЗрд░реЗ рдореБрджреНрджреЗ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА ;-)

рдореИрдВрдиреЗ рдкреНрд░рдорд╛рдгрд┐рдд-рдкреНрд░рдмрдВрдзрдХ рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рдЕрдВрджрд░ рдПрдХ OpenShift рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░-рдкреНрд░рдмрдВрдзрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдЬрдм рдореИрдВрдиреЗ рдЗрд╕ рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддреЛ рдпрд╣ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдлрдВрд╕ рдЧрдпрд╛ред oc delete apiservices v1beta1.admission.certmanager.k8s.io рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрддрд╛ рд╣реИ, рдирд╛рдо рд╕реНрдерд╛рди рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИред

рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж @jecafarelli , рдЖрдкрдиреЗ рдореБрдЭреЗ рдореЗрд░реЗ рдореБрджреНрджреЗ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА ;-)

рдореИрдВрдиреЗ рдкреНрд░рдорд╛рдгрд┐рдд-рдкреНрд░рдмрдВрдзрдХ рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рдЕрдВрджрд░ рдПрдХ OpenShift рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░-рдкреНрд░рдмрдВрдзрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдЬрдм рдореИрдВрдиреЗ рдЗрд╕ рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддреЛ рдпрд╣ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдлрдВрд╕ рдЧрдпрд╛ред oc delete apiservices v1beta1.admission.certmanager.k8s.io рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрддрд╛ рд╣реИ, рдирд╛рдо рд╕реНрдерд╛рди рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИред

рдпрд╣рд╛рдБ, kubectl delete -f https://raw.githubusercontent.com/jetstack/cert-manager/release-0.8/deploy/manifests/00-crds.yaml рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реА

рдмрд╕ рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореБрдЭреЗ рднреА GKE рдХреЗ рд╕рд╛рде 1.13.6 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рд╣реИред рдпрд╣ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рдХреНрд╖реНрдп рдХреЗ рд╕рд╛рде рдЬреАрдХреЗ рдХреЗ рдЗрд╕реНрддрд┐рдпреЛ рдПрдбреЛрди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реБрдЖред
рдпрд╣ рд╕рдмрд╕реЗ рд▓рдВрдмрд╛ рдореБрджреНрджрд╛ рдзрд╛рдЧрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдХрднреА рднреА рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рд▓рд┐рдпрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЙрдбрд╝рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рдЬрдбрд╝ рдореЗрдВ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд╣рдорддрд┐ рдпрд╛ рдкреНрд░рдЬрдирди рдХрджрдо рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдлрдВрд╕ рд╕рдХрддрд╛ рд╣реИ :(

JSON рдФрд░ рдХрд░реНрд▓ / рдкреНрд░реЙрдХреНрд╕реА рд╡рд┐рдзрд┐ рдиреЗ рдКрдкрд░ рдХрдИ рдмрд╛рд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдФрд░ https://success.docker.com/article/kubernetes-namespace-stuck-in-terminating рдкрд░ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬреЛ рдореБрдЭреЗ рдмрдЪрд╛ рд░рд╣рд╛ рд╣реИред

Https://success.docker.com/article/kubernetes-namespace-stuck-in-terminating рдкрд░ рд╕рд▓рд╛рд╣ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╣рд╛рдирд┐рдХрд╛рд░рдХ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЕрдирд╛рде рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рд╛рдл рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рдорд╛рди рдирд╛рдо рд╡рд╛рд▓реЗ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рдмрд╛рдж рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред ред

рддреНрд░рд┐рд╢рдВрдХреБ рд╣рдЯрд╛рдиреЗ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░рдг рдХреЛ рдзрд░рд╛рддрд▓ рдкрд░ рд▓рд╛рдиреЗ рдХрд╛ рдХрд╛рдо рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореВрд▓рднреВрдд рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдкреАрдЖрдИ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рд╛рдл рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдирд╛рдорд╕реНрдерд╛рди рд╡рд┐рд▓реЛрдкрди рдмреНрд▓реЙрдХ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рд╣реЛрдиреЗ рддрдХред

рд╣рдордиреЗ рдЗрд╕реЗ рдЪрд╛рдХреВ рд╕реЗ рднреА рдорд╛рд░рд╛ рдЬреЛ рдЗрд╕ рдирд╛рдорд╛рдВрдХрд┐рдд рдПрдкрд┐рд╕ рд╕рд░реНрд╡рд┐рд╕ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред

---
apiVersion: apiregistration.k8s.io/v1beta1
kind: APIService
metadata:
  labels:
    autoscaling.knative.dev/metric-provider: custom-metrics
    serving.knative.dev/release: v0.7.1
  name: v1beta1.custom.metrics.k8s.io
spec:
  group: custom.metrics.k8s.io
  groupPriorityMinimum: 100
  insecureSkipTLSVerify: true
  service:
    name: autoscaler
    namespace: knative-serving
  version: v1beta1
  versionPriority: 100
---

рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж рджреЛрдиреЛрдВ рдЪрд╛рдХреВ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдирдПрд╕ рдФрд░ рдЕрдиреНрдп рдЕрдЯрдХ рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╕рд╛рдл рд╣реЛ рдЧрдпрд╛ред рдЙрдкрд░реЛрдХреНрдд рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП @jecafarelli рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред
рдпрд╣рд╛рдВ рдПрдХ рднрдпрд╛рдирдХ рдкреЙрд╡рд░рд╢реЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред

$api = kubectl get apiservice -o json  | convertfrom-json
#list out the namespaced api items can ignore kube-system
$api.items | % { $_.spec.service.namespace }
#repalce knative-serving with whatever namespace you found
$api.items | ? { $_.spec.service.namespace -eq 'knative-serving'  } | ConvertTo-Json
#replace v1beta1.custom.metrics.k8s.io with whatever you found. 
k delete apiservice v1beta1.custom.metrics.k8s.io

рдореБрдЭреЗ рдЖрдЬ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереА рдФрд░ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред

@ Kubernetes / sig-api-рдорд╢реАрдирд░реА-рд╡рд┐рд╡рд┐рдз

рдпрд╣ рдмрдЧ> рд╡рд░реНрд╖ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рд╣реИ рдФрд░ рдЕрднреА рднреА рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ ... рдЗрд╕ рддрд░рд╣ рдХреЗ рдЗрдирдмрд╛рдЙрдВрдб рдореБрджреНрджреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреА рдХреНрдпрд╛ рдпреЛрдЬрдирд╛ рд╣реИ?

рдЗрд╕рд╕реЗ рдХрдо рд╕реЗ рдХрдо рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ: https://github.com/kubernetes/kubernetes/pull/80962

рдореИрдВ рдЙрд╕реА рдореБрджреНрджреЗ рдХреЛ рдорд╛рд░ рд░рд╣рд╛ рд╣реВрдВ

k get ns cdnamz-k8s-builder-system  -o yaml 
apiVersion: v1
kind: Namespace
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"labels":{"control-plane":"controller-manager"},"name":"cdnamz-k8s-builder-system"}}
  creationTimestamp: "2019-08-05T18:38:21Z"
  deletionTimestamp: "2019-08-05T20:37:37Z"
  labels:
    control-plane: controller-manager
  name: cdnamz-k8s-builder-system
  resourceVersion: "5980028"
  selfLink: /api/v1/namespaces/cdnamz-k8s-builder-system
  uid: 3xxxxxxx
spec:
  finalizers:
  - kubernetes
status:
  phase: Terminating
 k get ns 
NAME                        STATUS        AGE
cdnamz-k8s-builder-system   Terminating   4h20m

рдирд╛рдо рд╕реНрдерд╛рди рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдирд╛рдорд╕реНрдерд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдХреЗрдИрдкреА рдХреА рдЬрд░реВрд░рдд рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕реАрдзрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕реЗ рд▓реЗ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдорд╛рдиреНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИред

@timothysc рд╡рд╣рд╛рдБ рдЙрдбрд╝рд╛рди (рдХрд╣реАрдВ) рдореЗрдВ рдПрдХ рдкреАрдЖрд░ рдХрд░ @smarterclayton рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд╣рддреЗ рд╣реИрдВ (рдпрд╛ рдерд╛)ред

рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдФрд░ github рдореБрджреНрджрд╛ рднреА рд╣реИ?

рд╣рд╛рдБ рдкреАрдЖрд░ рдпрд╣рд╛рдБ рд╣реИ: https://github.com/kubernetes/kubernetes/pull/73405

рдЬрд┐рд╕ рдореБрджреНрджреЗ рдкрд░ рдореИрдВ рд╡рд┐рд╣рд┐рдд рдорд╛рдирддрд╛ рд╣реВрдВ, рд╡рд╣ рдпрд╣рд╛рдВ рд╣реИ: https://github.com/kubernetes/kubernetes/issues/70x16

рдпрд╣рд╛рдБ рдПрдХ рд╕рдВрд╕рд╛рдзрди рд╣реИ рдЬрд┐рд╕рдиреЗ рдореЗрд░реА рдорджрдж рдХреА: https://www.ibm.com/support/knowledgecenter/en/SSBS6K_3.1.1/troubleshoot/ns_terminating.html

рдпрд╣ @slassh рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдерд╛рдиреАрдп рдкреНрд░реЙрдХреНрд╕реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП kubectl proxy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ curl рдХрдорд╛рдВрдб рдХреЗ рд▓рдХреНрд╖реНрдп рдЖрдИрдкреА рдХреЛ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдпреЛрдЧреНрдп рдмрдирд╛рддрд╛ рд╣реИред

-

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдЙрддреНрддрд░ рдХреЗ рдиреАрдЪреЗ рдХрдИ рдмрд╛рд░ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рд╕рдорд╛рдзрд╛рди рдПрдХ рдЧрдВрджрд╛ рд╣реИрдХ рд╣реИ рдФрд░ рд╕рдВрднрд╡рддрдГ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдХреБрдЫ рдирд┐рд░реНрднрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдЧрд╛ред рдЕрдкрдиреЗ рдЬреЛрдЦрд┐рдо рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдФрд░ рд╕рдВрднрд╡рддрдГ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╡рд┐рдХрд╛рд╕ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдПрдХ рддреНрд╡рд░рд┐рдд рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдЙрддреНрдкрд╛рджрди рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ)ред

рд╕реАрдзреЗ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдКрдкрд░ рдбреЙрдХреНрдЯрд░ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рд▓реЛрдкрди рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рднреА рдЬреЛ рд╕рдВрд╕рд╛рдзрди рд▓рдВрдмрд┐рдд рдереЗ, рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдлрд╛рдЗрдирд▓ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ ns рдХреЗ рд╡рд┐рд▓реЛрдкрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рднреА рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╕рд╡рд╛рд▓реЛрдВ рдореЗрдВ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдорд┐рд▓рд╛:

NAMESPACE=<namespace-name>
kubectl proxy &
kubectl get namespace $NAMESPACE -o json |jq '.spec = {"finalizers":[]}' >temp.json
curl -k -H "Content-Type: application/json" -X PUT --data-binary @temp.json 127.0.0.1:8001/api/v1/namespaces/$NAMESPACE/finalize

рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╕рд╡рд╛рд▓реЛрдВ рдореЗрдВ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдорд┐рд▓рд╛:

NAMESPACE=<namespace-name>
kubectl proxy &
kubectl get namespace $NAMESPACE -o json |jq '.spec = {"finalizers":[]}' >temp.json
curl -k -H "Content-Type: application/json" -X PUT --data-binary @temp.json 127.0.0.1:8001/api/v1/namespaces/$NAMESPACE/finalize

рдзрдиреНрдпрд╡рд╛рдж!
рдпрд╣ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдЗрд╕ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░рд▓ рдРрдк рдмрдирд╛рддрд╛ рд╣реВрдВ: https://github.com/jenoOvchi/k8sdelns
рдореИрдВ рдЗрд╕реЗ рддреЗрдЬреА рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ 1.12.2 рдирд╛рдорд╕реНрдерд╛рди рд╕рдорд╛рдкреНрддрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИрдВред рдХрднреА-рдХрднреА рдлрд╛рдЗрдирд▓ рдХреЛ ns рдХреЗ yaml рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдХреЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рдПрдкреАрдЖрдИ рджреНрд╡рд╛рд░рд╛ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред рдХреНрдпрд╛ рдЗрд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдкрд░рд┐рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рд╣рдордиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рд╣реИ (рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛: рдЗрд╕ рдПрдирдПрд╕ рдореЗрдВ рдХреЛрдИ рд╕рдВрд╕рд╛рдзрди рдирд╣реАрдВ рд╣реИрдВ), рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд╕рдВрдХреЗрдд рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдзрдиреНрдпрд╡рд╛рдж!

рдлрд┐рд░ рд╕реЗ, рдХреГрдкрдпрд╛ рдЕрдВрддрд┐рдо рд░реВрдк рди рдирд┐рдХрд╛рд▓реЗрдВ, рдпрд╣ рдПрдХ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ NS рдореЗрдВ рдХреМрди рд╕реЗ рд╕рдВрд╕рд╛рдзрди рд╡рд┐рд▓реЛрдкрд┐рдд рд╣реИрдВ:

  • рдпрд╣ рджреЗрдЦрдирд╛ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдПрдкрд┐рд╕реНрд╕рд░реНрд╡ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд╕реЗрд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: kubectl get apiservice|grep False
  • рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдЬреЛ рдЕрднреА рднреА kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get -n $your-ns-to-delete (рдЙрд╕ рдПрдХ рдХреЗ рд▓рд┐рдП рдЬреЙрд░реНрдбрди рдХреЗ рд▓рд┐рдП рдпрд╢) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВ

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╕рдлрд╛рдИ рддрдВрддреНрд░ рдХреЛ рд╢реЙрд░реНрдЯ-рд╕рд░реНрдХрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╕рдлрд╛рдИ рдХреЛ рд╕рдлрд▓ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред

рдлрд┐рд░ рд╕реЗ, рдХреГрдкрдпрд╛ рдЕрдВрддрд┐рдо рд░реВрдк рди рдирд┐рдХрд╛рд▓реЗрдВ, рдпрд╣ рдПрдХ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ NS рдореЗрдВ рдХреМрди рд╕реЗ рд╕рдВрд╕рд╛рдзрди рд╡рд┐рд▓реЛрдкрд┐рдд рд╣реИрдВ:

  • рдпрд╣ рджреЗрдЦрдирд╛ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдПрдкрд┐рд╕реНрд╕рд░реНрд╡ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд╕реЗрд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: kubectl get apiservice|grep False
  • рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдЬреЛ рдЕрднреА рднреА kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get -n $your-ns-to-delete (рдЙрд╕ рдПрдХ рдХреЗ рд▓рд┐рдП рдЬреЙрд░реНрдбрди рдХреЗ рд▓рд┐рдП рдпрд╢) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВ

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╕рдлрд╛рдИ рддрдВрддреНрд░ рдХреЛ рд╢реЙрд░реНрдЯ-рд╕рд░реНрдХрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╕рдлрд╛рдИ рдХреЛ рд╕рдлрд▓ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред

рдЖрдк рдХрд┐рддрдиреЗ рд╕рд╣реА рд╣реИрдВ
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдСрдкрд░реЗрдЯрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдлрд▓реА рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред
рдЕрдкреНрд░рдпреБрдХреНрдд рд╕реЗрд╡рд╛ рдХреЛ рд╣рдЯрд╛рдирд╛ (kubectl apiservice рдХреЛ рд╣рдЯрд╛рдирд╛) рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╣рд▓ рдХрд┐рдпрд╛ред

рд╣рд╛рдп рд╕рдм, рдХреЛрдб рдлреНрд░реАрдЬ рдмрд╕ рдХреБрдЫ рд╣реА рджрд┐рдиреЛрдВ (рдЧреБрд░реБрд╡рд╛рд░, рджрд┐рди, рдкреАрдПрд╕рдЯреА) рдореЗрдВ рдЖ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ v1.16 рдХреЗ рд▓рд┐рдП рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдЧреА рдпрд╛ v1.17 рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рдПрдЧреАред рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдХреНрдпрд╛ рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди GKE рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛? рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рдореБрдЯреНрдареА рднрд░ рдирд╛рдорд╕реНрдерд╛рди рд╣реИрдВ рдЬреЛ рдЕрднреА рднреА "рд╕рдорд╛рдкреНрдд" рд╣реИрдВред

@squarelover рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднреА? https://github.com/kubernetes/kubernetes/issues/60807#issuecomment -550772920

@josiahbjorgaard рдореИрдВрдиреЗ рдЕрднреА рдкреАрдЖрд░ рдХреЛ рдордВрдЬреВрд░реА рджреА рд╣реИ, рдЬреЛ рдХрд┐ рд╣рдо 1.16 рдкрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

https://github.com/kubernetes/kubernetes/pull/73405 рдкреВрд░реНрд╡реЛрдХреНрдд рдкреАрдЖрд░ рд╣реИ

рдпрд╣ рд╡рд┐рд▓рдп рд╣реЛ рдЧрдпрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдФрд░ рднреА рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреГрдкрдпрд╛ рднрд╡рд┐рд╖реНрдп рдХреА рдЯрд┐рдкреНрдкрдгреА # 70916 рдкрд░ рд▓реЗрдВред

рдлрд┐рд░ рд╕реЗ, рдХреГрдкрдпрд╛ рдЕрдВрддрд┐рдо рд░реВрдк рди рдирд┐рдХрд╛рд▓реЗрдВ, рдпрд╣ рдПрдХ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ NS рдореЗрдВ рдХреМрди рд╕реЗ рд╕рдВрд╕рд╛рдзрди рд╡рд┐рд▓реЛрдкрд┐рдд рд╣реИрдВ:

  • рдпрд╣ рджреЗрдЦрдирд╛ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдПрдкрд┐рд╕реНрд╕рд░реНрд╡ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд╕реЗрд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: kubectl get apiservice|grep False
  • рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдЬреЛ рдЕрднреА рднреА kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get -n $your-ns-to-delete (рдЙрд╕ рдПрдХ рдХреЗ рд▓рд┐рдП рдЬреЙрд░реНрдбрди рдХреЗ рд▓рд┐рдП рдпрд╢) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВ

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╕рдлрд╛рдИ рддрдВрддреНрд░ рдХреЛ рд╢реЙрд░реНрдЯ-рд╕рд░реНрдХрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╕рдлрд╛рдИ рдХреЛ рд╕рдлрд▓ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред

рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореАрдЯреНрд░рд┐рдХ-рд╕рд░реНрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рдЖрдк рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рддреИрдирд╛рдд рдкреЙрдбреНрд╕ рдореИрдЯреНрд░рд┐рдХ рд╕рднрд╛ рдХреЗ рд▓рд┐рдП рджреЗрдЦрддреЗ рд╣реИрдВред рдпрд╣ рдореАрдЯреНрд░рд┐рдХ-рд╕рд░реНрд╡рд░ рд╕реЗ рд▓рдЯрдХрд╛ рд░рд╣рддрд╛ рд╣реИред рддреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрд╕ рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж рднреА, рдореАрдЯреНрд░рд┐рдХ-рд╕рд░реНрд╡рд░ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рддрд░рд╣ рдЙрд╕ рдирд╛рдорд╕реНрдерд╛рди рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред рдЬреЛ рдЖрдкрдХреЛ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рд░реЛрдХреЗрдЧрд╛ред
рдпрд╣ рдкреЛрд╕реНрдЯ рдЖрдкрдХреЛ рдЗрд╕ рдХрд╛рд░рдг рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИ рдХрд┐ рдЖрдк рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣рдЯрд╛ рд╕рдХрддреЗред рддреЛ рд╕рдВрд╕реНрдХрд╛рд░ рддрд░реАрдХрд╛ рд╣реИред

рдЕрдкрдиреЗ рдирд╛рдо рд╕реНрдерд╛рди рдХреА рд╕рднреА рдЪреАрдЬрд╝реЛрдВ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдБ: kubernetes / kubectl # 151 (рдЯрд┐рдкреНрдкрдгреА)

рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрдирд▓реА рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП kubectl delete рдпрд╛ kubectl edit рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ, рдзрдиреНрдпрд╡рд╛рджред

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ,

рдореИрдВрдиреЗ рд╕рдорд╛рдкреНрддрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрд╕рд╛рди рд╣рдЯрд╛рдП рдЧрдП рдирд╛рдорд╕реНрдерд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдИ: https://github.com/thyarles/knskред

рдзрдиреНрдпрд╡рд╛рджред

рд╣рдо рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде рдорд┐рд▓реЗ рдереЗ, рдЬрдм рдПрдХ рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реБрдП, рдпрд╣ 'рд╕рдорд╛рдкреНрдд' рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдлрдВрд╕ рдЬрд╛рдПрдЧрд╛ред рдореИрдВрдиреЗ yaml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдВрддрд┐рдо рд░реВрдк рдореЗрдВ 'рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕' рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕реНрдЯреИрдкреНрд╕ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ред рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИрдВред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдореЗрдВ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╣рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрджрдо рдЙрдард╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред рдпрд╣ kubectl ns foonamespace рдХреЛ рдбрд┐рд▓реАрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕реЗ рдбрд┐рд▓реАрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ рдХрд╛рд░рдг рджреЗ рд╕рдХрддрд╛ рд╣реИ? рдзрдиреНрдпрд╡рд╛рдж!

рд╣реИрд▓реЛ @ xzhang007 ,

рдпрджрд┐ рдЖрдкрдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдирд╛рдо рд╕реНрдерд╛рди рд╡рд┐рд▓реЛрдкрди рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреНрдпреЛрдВ рдЕрдЯрдХ рдЧрдпрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред рдореИрдВрдиреЗ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдирд╣реАрдВред рддрдм рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдИ рдЬрдм рддрдХ рдЦреЛрдЬ рдФрд░ рдХрд╛рд░рдг рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдзрдиреНрдпрд╡рд╛рджред

@ рдпрд╣ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЕрдм рддрдХ рдХреЛрдИ рдЬрд╡рд╛рдм рдирд╣реАрдВ рдорд┐рд▓рд╛ред

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╡реЗрдмрд╣реЙрдХ рдФрд░ рдлрд╛рдЗрдирд▓ рдореЗрдВ рд╕реЗ рдПрдХ рд╣рдо рдереЗ
рдЙрдкрдпреЛрдЧ рдПрдХ рдлрд▓реА рддрдХ рдкрд╣реБрдВрдЪ рд░рд╣рд╛ рдерд╛ рдЬреЛ рдХрд┐ рдкреНрд░рд╛рдкреНрдд рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд░рд╣ рд░рд╣реА рдереА
рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ред
рдПрдХ рдмрд╛рд░ рдлрд▓реА рд╣рдЯрдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдорд╛рдкреНрддрд┐ рдЕрдЯрдХ рдЧрдИред

>

@ xzhang007 рдЖрдкрдиреЗ @alvaroaleman рджреНрд╡рд╛рд░рд╛ рдЧреМрд░ рдХрд┐рдпрд╛ рд╣реИ? рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рдерд╛ред

рдлрд┐рд░ рд╕реЗ, рдХреГрдкрдпрд╛ рдЕрдВрддрд┐рдо рд░реВрдк рди рдирд┐рдХрд╛рд▓реЗрдВ, рдпрд╣ рдПрдХ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ NS рдореЗрдВ рдХреМрди рд╕реЗ рд╕рдВрд╕рд╛рдзрди рд╡рд┐рд▓реЛрдкрд┐рдд рд╣реИрдВ:

  • рдпрд╣ рджреЗрдЦрдирд╛ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдПрдкрд┐рд╕реНрд╕рд░реНрд╡ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд╕реЗрд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: kubectl get apiservice|grep False
  • рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдЬреЛ рдЕрднреА рднреА kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get -n $your-ns-to-delete (рдЙрд╕ рдПрдХ рдХреЗ рд▓рд┐рдП рдЬреЙрд░реНрдбрди рдХреЗ рд▓рд┐рдП рдпрд╢) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВ

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╕рдлрд╛рдИ рддрдВрддреНрд░ рдХреЛ рд╢реЙрд░реНрдЯ-рд╕рд░реНрдХрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╕рдлрд╛рдИ рдХреЛ рд╕рдлрд▓ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред


рдпрд╣ рднреА, рдЬрдм рдпрд╣ рдореБрджреНрджрд╛ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЯрд┐рдХрдЯ рдерд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП рдХрд┐ рдирд╛рдо рд╕рдорд╛рдкреНрддрд┐ рдореЗрдВ рдХреНрдпреЛрдВ рдЕрдЯрдХ рдЧрдпрд╛ рд╣реИред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдмрдВрдж рдореБрджреНрджреЗ рдХреЗ рдмрдЬрд╛рдп рд╡рд╣рд╛рдВ рдмрд╛рддрдЪреАрдд рдХрд░реЗрдВред

рдпрд╣ рд╡рд┐рд▓рдп рд╣реЛ рдЧрдпрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдФрд░ рднреА рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреГрдкрдпрд╛ рднрд╡рд┐рд╖реНрдп рдХреА рдЯрд┐рдкреНрдкрдгреА # 70916 рдкрд░ рд▓реЗрдВред

@ jeff-knurek рдпрд╣ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдзрдиреНрдпрд╡рд╛рджред

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ cert-manager рдХрд╛ рдПрдХ рдЙрдиреНрдирдд рдЙрдиреНрдирдпрди рдерд╛ рдЬрд┐рд╕рдиреЗ рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдпрд╛ред https://github.com/jetstack/cert-manager/issues/1582

$ kube get apiservice

NAME                                   SERVICE                                                     AVAILABLE                  AGE
v1.                                    Local                                                       True                       43d
v1.apps                                Local                                                       True                       43d
v1.authentication.k8s.io               Local                                                       True                       43d
v1.authorization.k8s.io                Local                                                       True                       43d
v1.autoscaling                         Local                                                       True                       43d
v1.batch                               Local                                                       True                       43d
v1.coordination.k8s.io                 Local                                                       True                       43d
v1.networking.k8s.io                   Local                                                       True                       43d
v1.rbac.authorization.k8s.io           Local                                                       True                       43d
v1.scheduling.k8s.io                   Local                                                       True                       43d
v1.storage.k8s.io                      Local                                                       True                       43d
v1alpha1.certmanager.k8s.io            Local                                                       True                       3d22h
v1alpha1.crd.k8s.amazonaws.com         Local                                                       True                       43d
v1beta1.admission.certmanager.k8s.io   cert-manager/cointainers-cointainers-cert-manager-webhook   False (MissingEndpoints)   60m
v1beta1.admissionregistration.k8s.io   Local                                                       True                       43d
v1beta1.apiextensions.k8s.io           Local                                                       True                       43d
v1beta1.apps                           Local                                                       True                       43d
v1beta1.authentication.k8s.io          Local                                                       True                       43d
v1beta1.authorization.k8s.io           Local                                                       True                       43d
v1beta1.batch                          Local                                                       True                       43d
v1beta1.certificates.k8s.io            Local                                                       True                       43d
v1beta1.coordination.k8s.io            Local                                                       True                       43d
v1beta1.events.k8s.io                  Local                                                       True                       43d
v1beta1.extensions                     Local                                                       True                       43d
v1beta1.networking.k8s.io              Local                                                       True                       43d
v1beta1.node.k8s.io                    Local                                                       True                       43d
v1beta1.policy                         Local                                                       True                       43d
v1beta1.rbac.authorization.k8s.io      Local                                                       True                       43d
v1beta1.scheduling.k8s.io              Local                                                       True                       43d
v1beta1.storage.k8s.io                 Local                                                       True                       43d
v1beta1.webhook.cert-manager.io        cert-manager/cointainers-cointainers-cert-manager-webhook   False (MissingEndpoints)   3d22h
v1beta2.apps                           Local                                                       True                       43d
v2beta1.autoscaling                    Local                                                       True                       43d
v2beta2.autoscaling                    Local                                                       True                       43d

рдирдорд╕реНрддреЗред
рдЬрдм рдореИрдВ https://github.com/rancher/rancher/issues/21546#issuecomment -553635629

рд╢рд╛рдпрдж рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛ред

https ://рдореАрдбрд┐рдпрд╛

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдЬреЗрддрд╛ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛

рдореИрдВрдиреЗ рднреА рдЙрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдЬреЛ рдЕрдм рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдХреГрдкрдпрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВ рдФрд░ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░реЗрдВ

@zerkms рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдХрднреА-рдХрднреА, рдпрд╣ рдПрдХ рд╡реИрдз рд╕рд▓рд╛рд╣ рд╣реИ, рд╣реИ рдирд╛? рдЕрдХреНрд╕рд░ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдирд╛рдорд╕реНрдерд╛рди рд╡рд┐рд▓реЛрдкрди рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЪреВрдВрдХрд┐ рдЕрдм рдФрд░ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ - рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗ рд╕рдХрддрд╛ рд╣реИ - рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреИрдЪ рдХрд░рдирд╛ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд▓реЗрдЦ рдХрд╛ рд╡рд░реНрдгрди _is рдПрдХрдорд╛рддреНрд░ рд╡рд┐рдХрд▓реНрдк_ рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд▓реЗрдЦ рдХреЗрд╡рд▓ рддрднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рд╕рдорд╕реНрдпрд╛ _was рд╣рд▓ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ_ рдЬреНрдЮрд╛рдд рдореБрджреНрджреЗ рдкреГрд╖реНрда рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдЪрд░рдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ, рд▓реЗрдЦ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рд▓рд╛рд╣ рд╣реИ рдХрд┐ рдЯрд┐рдкреНрдкрдгреА рдЬреЛ рдЖрдкрдиреЗ рджреЛрд╣рд░рд╛рдИ рд╣реИред

@zerkms рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдХрднреА-рдХрднреА, рдпрд╣ рдПрдХ рд╡реИрдз рд╕рд▓рд╛рд╣ рд╣реИ, рд╣реИ рдирд╛? рдЕрдХреНрд╕рд░ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдирд╛рдорд╕реНрдерд╛рди рд╡рд┐рд▓реЛрдкрди рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛

рдореИрдВрдиреЗ рдХрднреА рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗрдорд╕реНрдкреЗрд╕ рдкрд░ рдПрдХ spec.finalizer рдХреЗ рд▓рд┐рдП рд╕рдЪ рд╣реЛред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦреЗ рдЧрдП рд╣рд░ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреНрд▓реАрдирдЕрдк рдХрдВрдЯреНрд░реЛрд▓рд░ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдФрд░ рдпрд╛ рддреЛ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдПрдХ рд╕реНрдерд╛рдпреА рд╡рд╕реНрддреБ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ (рдЬреЛ рдХрд┐ рд╕рд▓рд╛рд╣ рдЖрджрд┐ рдореЗрдВ рдлрдВрд╕реЗрдЧрд╛), рдпрд╛ рдПрдХ рдЧреИрд░-рд╕рдореЗрдХрд┐рдд рдПрдкреАрдЖрдИ (рдЬреЛ рдиреЗрдорд╕реНрдкреЗрд╕ рд╕реНрдкреЗрд╕ рдХреЛ рд╣рдЯрд╛ рд░рд╣рд╛ рд╣реИред рдлрд╛рдЗрдиреЗрд▓рд╛рдЗрдЬрд╝рд░ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдЧрд╛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЙрд╕ рдПрдкреАрдЖрдИ рд╕реЗ рдХрд┐рд╕реА рднреА рдирд┐рд░рдВрддрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдлрдВрд╕реЗ рд╣реБрдП)

рд▓реЗрдЦ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рдЕрдВрддрд┐рдордХрд░рдг рдХреЗ рдЬреЛрдЦрд┐рдо рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдП, рднрдВрдбрд╛рд░рдг рдореЗрдВ рдлрдВрд╕реЗ рдирд╛рдорд╕реНрдерд╛рди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред

рдореИрдВрдиреЗ рдХрднреА рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗрдорд╕реНрдкреЗрд╕ рдкрд░ рдПрдХ spec.finalizer рдХреЗ рд▓рд┐рдП рд╕рдЪ рд╣реЛ

рд╣рд╛рдВ, рдпрд╣ рд╕рд╣реА рд╣реИ, рдпрд╣ рдирд┐рд░реНрдгрд╛рдпрдХ рд╣реИ рдпрд╣ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рдЕрдВрджрд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдЕрдиреНрдп рдЕрдВрддрд┐рдо рд░реВрдк рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЙрд╕ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЬреЛ рдореБрдЭреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдорд┐рд▓рд╛ рдерд╛, рд╡рд╣ https://appscode.com/products/stash/ ред

рдпрд╣ рдЕрдкрдиреЗ рдХреБрдЫ CRD рдкрд░ рдлрд╛рдЗрдирд▓ рдбрд╛рд▓рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рд╕реНрдЯреИрд╢-рдСрдкрд░реЗрдЯрд░ рдХреА рддреИрдирд╛рддреА рджреНрд╡рд╛рд░рд╛ рд╕реЗрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣рдЯрд╛рдП рдЧрдП рд╕реНрдЯреИрд╢-рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде, рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЙрди CRDs рд╕реЗ рдЕрдВрддрд┐рдо рдирд┐рд╢рд╛рди рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдирд╛рдо рд╕реНрдерд╛рди рд╡рд┐рд▓реЛрдкрди рдЕрдЯрдХ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрди рдлрд╛рдЗрдирд▓рд░реНрд╕ (рдЦреБрдж рдирд╛рдорд╕реНрдерд╛рди рдкрд░ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдкрд░) рдХреЛ рдкреИрдЪ рдХрд░рдирд╛ рд╣реА рдПрдХрдорд╛рддреНрд░ рд╕рдордЭрджрд╛рд░реА рд╡рд╛рд▓реА рдмрд╛рдд рд╣реИред

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрди рдлрд╛рдЗрдирд▓рд░реНрд╕ (рдЦреБрдж рдирд╛рдорд╕реНрдерд╛рди рдкрд░ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдкрд░) рдХреЛ рдкреИрдЪ рдХрд░рдирд╛ рд╣реА рдПрдХрдорд╛рддреНрд░ рд╕рдордЭрджрд╛рд░реА рд╡рд╛рд▓реА рдмрд╛рдд рд╣реИред

рд╕рд╣реА рдмрд╛рддред рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реЛрдЧреА рдХрд┐ "рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╣рдЯрд╛рдПрдВ" рдХреНрд▓реАрдирдЕрдк рдкрд░рд┐рджреГрд╢реНрдп, рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рд▓реЗрдЦ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрдпрд╛ рдЪрд▓рддрд╛ рд╣реИ ... рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдирд╛рдорд╕реНрдерд╛рди рд╕реЗ рдПрдХ spec.finalizer рдХреИрд╕реЗ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реИред

рдкрд╣рд▓реЗ, рдЫреЛрдЯреА рдХреЙрдлрд╝реА рд▓реЗрдВ рдФрд░ рдЖрд░рд╛рдо рдХрд░реЗрдВ, рдЕрдм рдЕрдкрдиреЗ k8s рдорд╛рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдкрд░ рдЬрд╛рдПрдБ

kubectl рдХреНрд▓рд╕реНрдЯрд░-рдЬрд╛рдирдХрд╛рд░реА
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдорд╛рд╕реНрдЯрд░ https: // localhost : 6443 рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ
KubeDNS https: // localhost : 6443 / api / v1 / namespaces / kube-system / services / kube- dns: dns / xy рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ
рдХреНрд▓рд╕реНрдЯрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдбреАрдмрдЧ рдФрд░ рдирд┐рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 'kubectl рдХреНрд▓рд╕реНрдЯрд░-рдЬрд╛рдирдХрд╛рд░реА рдбрдВрдк' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдЕрдм рдХреНрдпреВрдм-рдкреНрд░реЙрдХреНрд╕реА рдЪрд▓рд╛рдПрдВ
kubectl рдкреНрд░реЙрдХреНрд╕реА рдФрд░
127.0.0.1:8001 рдкрд░ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдирд╛
рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдИрдбреА рд╕рд╣реЗрдЬреЗрдВ :)

  1. рдЕрдкрдирд╛ рдирд╛рдо-рд╕реНрдерд╛рди рдЦреЛрдЬреЗрдВ рдЬрд┐рд╕рдиреЗ рддрдп рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╣рдЯрд╛рдП рдирд╣реАрдВ рдЬрд╛рдиреЗ рдХреА :) рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдкрд╢реБ-рдкреНрд░рдгрд╛рд▓реА рд╣реЛрдЧреА
    kubectl ns рдорд┐рд▓рддрд╛ рд╣реИ
    рдорд╡реЗрд╢реА-рд╡реНрдпрд╡рд╕реНрдерд╛ рд╕рдорд╛рдкреНрдд 1 рдбреА

рдЗрд╕реЗ рдлрд╛рдЗрд▓ рдореЗрдВ рдбрд╛рд▓реЗрдВ

  1. kubectl рдХреЛ namepace рдорд╡реЗрд╢реА-рд╕рд┐рд╕реНрдЯрдо -o json> tmp.json рдорд┐рд▓рддрд╛ рд╣реИ

рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рдлрд╛рдЗрдирд▓ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ
},
"рдХрд▓реНрдкрдирд╛": {
"рдлрд╛рдЗрдирд▓": [
"Kubernetes"
]
},
рд╕рдВрдкрд╛рджрди рдХреЗ рдмрд╛рдж рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП like
},
"рдХрд▓реНрдкрдирд╛": {
"рдлрд╛рдЗрдирд▓": [
]
},
рд╣рдо рд▓рдЧрднрдЧ рд╡рд╣рд╛рдБ ЁЯСН
curl -k -H "рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░: рдЕрдиреБрдкреНрд░рдпреЛрдЧ / json" -X PUT --data- рдмрд╛рдЗрдирд░реА @ tmp.json http://127.0.0.1 : 8001 / рдПрдкреАрдЖрдИ / v1 / рдирд╛рдорд╕реНрдерд╛рди / $ {NAMESPAD} / рдЕрдВрддрд┐рдо рд░реВрдк

рдФрд░ рдпрд╣ ЁЯСН рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИ

рдлрд┐рд░ рд╕реЗ, рдХреГрдкрдпрд╛ рдЕрдВрддрд┐рдо рд░реВрдк рди рдирд┐рдХрд╛рд▓реЗрдВ, рдпрд╣ рдПрдХ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ NS рдореЗрдВ рдХреМрди рд╕реЗ рд╕рдВрд╕рд╛рдзрди рд╡рд┐рд▓реЛрдкрд┐рдд рд╣реИрдВ:

  • рдпрд╣ рджреЗрдЦрдирд╛ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдПрдкрд┐рд╕реНрд╕рд░реНрд╡ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд╕реЗрд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: kubectl get apiservice|grep False
  • рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдЬреЛ рдЕрднреА рднреА kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get -n $your-ns-to-delete (рдЙрд╕ рдПрдХ рдХреЗ рд▓рд┐рдП рдЬреЙрд░реНрдбрди рдХреЗ рд▓рд┐рдП рдпрд╢) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВ

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╕рдлрд╛рдИ рддрдВрддреНрд░ рдХреЛ рд╢реЙрд░реНрдЯ-рд╕рд░реНрдХрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╕рдлрд╛рдИ рдХреЛ рд╕рдлрд▓ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред

рд╣реЗ рд▓реЛрдЧреЛрдВ! рдореИрдВ @alvaroaleman рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдпреБрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рдЕрдЯрдХ рдирд╛рдо рд╕реНрдерд╛рди рдХрд╛ рдПрдХ рдХрдард┐рди рд╡рд┐рд▓реЛрдкрди рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд░реАрдХреНрд╖рдг рдФрд░

рд╕реНрдХреНрд░рд┐рдкреНрдЯ https://github.com/thyarles/knsk рдХреНрдпрд╛ рдХрд░реЗрдВ:

  1. рдЕрдиреБрдкрд▓рдмреНрдз apiresources рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВ
  2. рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рд▓рдВрдмрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВ
  3. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдХрд┐рд╕реА рднреА рд╡рд┐рд▓реЛрдкрди рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рд▓реЛрдкрди рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ 5 рдорд┐рдирдЯ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ
  4. рдЕрдЯрдХ рдирд╛рдо рд╕реНрдерд╛рди рдХрд╛ рдмрд▓ рд╡рд┐рд▓реЛрдкрди

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рд╣рд╛рдпрддрд╛ рдорд┐рд▓реЗрдЧреАред

@thyarles рдЖрдкрдХрд╛ рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рддрд░реАрдХреЗ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред

$ kubectl рдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкрд┐рд╕рд┐рд╕ рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реА рд╕реЗрд╡рд╛ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ, рдЬреЛ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рджреЗрдВ $ kubectl рджреНрд╡рд╛рд░рд╛ apiservice [рд╕реЗрд╡рд╛-рдирд╛рдо] рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

рд╣рдорд╛рд░реА рдЯреАрдо рдХреЗ рд▓рд┐рдП, 3 рдЙрдкрд▓рдмреНрдз рдЕрдиреБрдкрд▓рдмреНрдзрддрд╛рдПрдБ рд╣реИрдВ, v1beta1.admission.certmanager.k8s.io, v1beta1.metrics.k8s.io, рдФрд░ v1beta1.webhook.certmanager.k8s.ioред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдкрдХрд╛ рдПрдкрд░реНрдЪрд░ рдЪрд▓ рдирд╣реАрдВ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЖрдкрдХрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдХреБрдЫ рд╣рдж рддрдХ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ, рдмрд╕ APIService рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореВрд▓ рдХрд╛рд░рдг рдареАрдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

@ рдореЗрдЯрд╛рд▓реИрдореНрдк рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдПрдХ рдЕрдиреБрдкрд▓рдмреНрдз рдПрдкрд┐рд╕рд┐рд╕рд╡рд░реНрдХ рд╣реИред

рд╣рд╛рдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдПрдкреНрд░рд┐рд╕рд╡рд░ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдПрдЪрдкреАрдП рдЖрдкрдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рднреАред

рд╣рд╛рдБред рдПрдЪрдкреАрдП рдЕрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЦреЛрдЬрдирд╛ рдЪрд╛рд╣рд┐рдПред

@thyarles рдЖрдкрдХрд╛ рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рддрд░реАрдХреЗ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред

$ kubectl рдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкрд┐рд╕рд┐рд╕ рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реА рд╕реЗрд╡рд╛ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ, рдЬреЛ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рджреЗрдВ $ kubectl рджреНрд╡рд╛рд░рд╛ apiservice [рд╕реЗрд╡рд╛-рдирд╛рдо] рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

рд╣рдорд╛рд░реА рдЯреАрдо рдХреЗ рд▓рд┐рдП, 3 рдЙрдкрд▓рдмреНрдз рдЕрдиреБрдкрд▓рдмреНрдзрддрд╛рдПрдБ рд╣реИрдВ, v1beta1.admission.certmanager.k8s.io, v1beta1.metrics.k8s.io, рдФрд░ v1beta1.webhook.certmanager.k8s.ioред

@ xzhang007 рд╕реБрдирдХрд░ рдЦреБрд╢реА рд╣реБрдИ! рдЕрдм рдЖрдкрдХреЛ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдкрдХрд╛ v1beta1.metrics.k8s.io рдХреНрдпреЛрдВ рдЯреВрдЯ рдЧрдпрд╛ред рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рд╣реЛрдЧрд╛:

`` `
$ kubectl -n kube-system рд╕рдм рдорд┐рд▓рддрд╛ рд╣реИ | grep рдореЗрдЯреНрд░рд┐рдХреНрд╕

рдкреЙрдб / рдореЗрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ -64 рдПрдл74 рдПрдл 8 рдбреА 47-рдЖрд░ 5 рдкреАрд╡реАрд╕реАрдХреНрдпреВ 2/2 рд░рдирд┐рдВрдЧ 9 119 рдбреА
рд╕реЗрд╡рд╛ / рдореИрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ ClusterIP xx.xx.xx.xx443 / рдЯреАрд╕реАрдкреА 201 рдбреА
рдкрд░рд┐рдирд┐рдпреЛрдЬрди .app / рдореЗрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ 1/1 1 1 201 рдбреА
replicaset.apps / рдореЗрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ -55 c7f68d94 0 0 0 165d
replicaset.apps / рдореЗрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ -5c696bb6d7 0 0 0 201 рдбреА
replicaset.apps / рдореЗрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░-5cdb8bb4fb 0 0 0 201 рдбреА
replicaset.apps / рдореЗрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ -64f74f8d47 1 1 1 119 рдбреА
replicaset.apps / рдореЗрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ -686789bb4b 0 0 0 145d```

$ kubectl -n kube-system рд╕рдм рдорд┐рд▓рддрд╛ рд╣реИ | grep рдореЗрдЯреНрд░рд┐рдХреНрд╕

рдлрд▓реА / рдореЗрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ -5dcfd4dd9f-m2v9k 1/1 рд░рдирд┐рдВрдЧ 0 2d20h

рд╕реЗрд╡рд╛ / рдореИрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ ClusterIP xx.xx.xx.xx443 / рдЯреАрд╕реАрдкреА 27 рдбреА

рдкрд░рд┐рдирд┐рдпреЛрдЬрди .apps / рдореЗрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ 1/1 1 1 27 рдбреА

replicaset.apps / рдореЗрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ -5dcfd4dd9f 1 1 1 27 рдбреА
replicaset.apps / рдореЗрдЯреНрд░рд┐рдХреНрд╕-рд╕рд░реНрд╡рд░ -7fcf9cc98b 0 0 0 27 рдбреА

рд╣рд╛рдБред рдПрдЪрдкреАрдП рдЕрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЦреЛрдЬрдирд╛ рдЪрд╛рд╣рд┐рдПред

@ xzhang007 рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдорд╕реНрдпрд╛ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ .... рдЖрдкрдиреЗ рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдЧреМрд░ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдиреЗ рдЖрдкрдХреЗ рд╣рдЯрд╛рдП рдЧрдП рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдЕрдЯрдХ рдореЛрдб рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ред рдЕрдкрдиреЗ рдореАрдЯреНрд░рд┐рдХ-рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрди: рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реЗрд▓реНрдо рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдХрдорд╛рдВрдб рдмрд▓реЛ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ ( рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рддреИрдирд╛рддреА рдлрд╝рд╛рдЗрд▓ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ ):

$ curl https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/metrics-server/metrics-server-deployment.yaml | kubectl apply -f -

@ рддрд╛рд▓рд╢ рд╕рдорд╛рдзрд╛рди рдиреЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ 1.15 рдкрд░ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛

V1beta1.metrics.k8s.io APIService рд╣рдЯрд╛рдПрдВ

kubectl get ns ns-to-delete -o yaml
...
status:
  conditions:
  - lastTransitionTime: "2020-01-08T05:36:52Z"
    message: 'Discovery failed for some groups, 1 failing: unable to retrieve the
      complete list of server APIs: metrics.k8s.io/v1beta1: the server is currently
      unable to handle the request'
...
kubectl get APIService
...
v1beta1.metrics.k8s.io                 kube-system/metrics-server   False (ServiceNotFound)
 kubectl delete v1beta1.metrics.k8s.io APIService

рдкреНрд░рдорд╛рдгрд┐рдд-рдкреНрд░рдмрдВрдзрдХ рд╢рд╛рдпрдж рдЕрдиреБрдкрд▓рдмреНрдз рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдВрдЧреНрд░реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ рдПрдХ рдЧрд▓рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП, рдпрд╣ рдерд╛

"certmanager.k8s.io/cluster-issuer": "letsencrypt-prod"

рдФрд░ рдЗрд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛

"cert-manager.io/cluster-issuer": "letsencrypt-prod"

рдЗрд╕реЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдПрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдЕрдВрдХ рдореЗрдВ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреБрдмреЗрдХреЗрд▓ рдХреЗ рдЖрдзреБрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдмреЗрдХреЗрд▓ рджреНрд╡рд╛рд░рд╛ рдЙрдЬрд╛рдЧрд░ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ рдЬрд╣рд╛рдВ kubectl replace --raw рдЙрдкрд▓рдмреНрдз рд╣реИ (рдЬреЛ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ)ред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдкрдХреЛ kubectl proxy рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдЕрдкрдирд╛рдиреА рдкрдбрд╝реЗрдЧреА рдФрд░ curl рд╕рд╛рде рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдмрдЪрдирд╛ рд╣реЛрдЧрд╛ (рдХрд┐ рдХреБрдЫ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЬреИрд╕реЗ рдХрд┐ рдмрд┐рдЬреАрдмреЙрдХреНрд╕ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ)ред рдЗрд╕ рдЙрдореНрдореАрдж рдореЗрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдФрд░ рдХреЛ рдореЗрд░реА рдорджрдж рдХрд░реЗрдЧрд╛ рдЬреЛ рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛:

kubectl get namespace "stucked-namespace" -o json \
            | tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" \
            | kubectl replace --raw /api/v1/namespaces/stucked-namespace/finalize -f -

рдХреНрдпрд╛ рдпрд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдореБрджреНрджрд╛ рд╣реИ? рд▓рдЧрддрд╛ рд╣реИ рдпрд╣рд╛рдБ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдШреЛрд▓ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ рд▓реЗрдХрд┐рди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдХрд┐ рд╣рдо рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╣рдорд╛рд░реЗ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИ ...ред
рдореИрдВ EKS v1.14 рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдпрд╣ рд╣реИ

рдХреНрдпрд╛ рдпрд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдореБрджреНрджрд╛ рд╣реИ? рд▓рдЧрддрд╛ рд╣реИ рдпрд╣рд╛рдБ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдШреЛрд▓ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ рд▓реЗрдХрд┐рди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╣рдорд╛рд░реЗ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИ

рдореВрд▓ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдПрдХ рдПрдХрддреНрд░рд┐рдд API рд╕рдореВрд╣ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИред рдпрд╣ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╣реИ рдХрд┐ рд╕рднреА рдПрдкреАрдЖрдИ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рддрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреНрд▓реАрдирдЕрдк рдХрдВрдЯреНрд░реЛрд▓рд░ рдмреНрд▓реЙрдХ, рддрд╛рдХрд┐ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХреЗ рдХрд┐ рд╕рднреА рдПрдкреАрдЖрдИ рд╕рдореВрд╣реЛрдВ рд╕реЗ рд╕рднреА рд╕рдВрд╕рд╛рдзрди рдЙрд╕ рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рд╕рд╛рдл рдХрд┐рдП рдЧрдП рд╣реИрдВред

ppl рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХрд░реНрд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛:

# Check all possible clusters, as your .KUBECONFIG may have multiple contexts:
kubectl config view -o jsonpath='{"Cluster name\tServer\n"}{range .clusters[*]}{.name}{"\t"}{.cluster.server}{"\n"}{end}'

# Select name of cluster you want to interact with from above output:
export CLUSTER_NAME="some_server_name"

# Point to the API server referring the cluster name
APISERVER=$(kubectl config view -o jsonpath="{.clusters[?(@.name==\"$CLUSTER_NAME\")].cluster.server}")

# Gets the token value
TOKEN=$(kubectl get secrets -o jsonpath="{.items[?(@.metadata.annotations['kubernetes\.io/service-account\.name']=='default')].data.token}"|base64 --decode)

# Explore the API with TOKEN
curl -X GET $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure

https://kubernetes.io/docs/tasks/administer-cluster/access-cluster-api/#without -kubectl -xy

рдпрд╣рд╛рдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред jq :


#!/bin/bash

if [ -z "${1}" ] ; then
  echo -e "\nUsage: ${0} <name_of_the_namespace_to_remove_the_finalizer_from>\n"
  echo "Valid cluster names, based on your kube config:"
  kubectl config view -o jsonpath='{"Cluster name\tServer\n"}{range .clusters[*]}{.name}{"\t"}{.cluster.server}{"\n"}{end}'
  exit 1
fi

kubectl proxy --port=8901 &
PID=$!
sleep 1

echo -n 'Current context : '
kubectl config current-context 
read -p "Are you sure you want to remove the finalizer from namespace ${1}? Press Ctrl+C to abort."

kubectl get namespace "${1}" -o json \
            | jq '.spec.finalizers = [ ]' \
            | curl -k \
            -H "Content-Type: application/json" \
            -X PUT --data-binary @- "http://localhost:8901/api/v1/namespaces/${1}/finalize"

kill -15 $PID

рд╣рд░ рдХреЛрдИ: рдЕрдВрддрд┐рдо рд╣рдЯрд╛рдиреЗ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдЪреНрдЫреЗ рд╕реЗ рдЕрдзрд┐рдХ рдиреБрдХрд╕рд╛рди рдХрд░рддреА рд╣реИ ред рд╡реЗ рдЙрдкрд▓рдмреНрдз рдПрдлрд╝рд┐рд╕рд░ (рдУрдВ) рдореЗрдВ рд╕рдордп-рдмрдо рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ; рдпрджрд┐ рдХреЛрдИ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рдкреБрди: рдмрдирд╛рддрд╛ рд╣реИ, рддреЛ рдЕрдЪрд╛рдирдХ рдкреБрд░рд╛рдиреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдХрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реИ:

$ kubectl get api-services

# something in the list is unavailable. Figure out what it is and fix it.

# ... the namespace lifecycle controller will finish deleting the namespace.

рд╣рд░ рдХреЛрдИ: рдЕрдВрддрд┐рдо рд╣рдЯрд╛рдиреЗ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдЪреНрдЫреЗ рд╕реЗ рдЕрдзрд┐рдХ рдиреБрдХрд╕рд╛рди рдХрд░рддреА рд╣реИ ред рд╡реЗ рдЙрдкрд▓рдмреНрдз рдПрдлрд╝рд┐рд╕рд░ (рдУрдВ) рдореЗрдВ рд╕рдордп-рдмрдо рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ; рдпрджрд┐ рдХреЛрдИ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рдкреБрди: рдмрдирд╛рддрд╛ рд╣реИ, рддреЛ рдЕрдЪрд╛рдирдХ рдкреБрд░рд╛рдиреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдХрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реИ:

$ kubectl get api-services

# something in the list is unavailable. Figure out what it is and fix it.

# ... the namespace lifecycle controller will finish deleting the namespace.

https://github.com/thyarles/knsk

рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рднреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдирд╛рде рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рддрд▓рд╛рд╢ рд╕рд╣рд┐рдд рдПрдХ рд╕рд╛рдл рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдИ рдЬреЛрдЦрд┐рдо рд▓реЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдЧреИрд░-рдЕрдиреБрд╢рдВрд╕рд┐рдд рддрд░реАрдХрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ --force рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдЯрд╛рдЗрдкреЛ, рдПрдкрд┐рд╕рд┐рд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдпрд╣ рдЖрджреЗрд╢ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:

kubectl get apiservices --template='{{range $api := .items}}{{range $api.status.conditions}}{{if eq .type "Available"}}{{$api.metadata.name}} {{.status}}{{"\n"}}{{end}}{{end}}{{end}}' | grep -i false

рдпрд╣ рд▓реЗрдЦ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛:

https://access.redhat.com/solutions/5038511

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреЛ рдореМрдЬреВрдж рд╣реИ рд╡рд╣ рдПрдкрд┐рд╕рд┐рд╕ рдореЗрдВ рдПрдХ рд╕рдВрдШрд░реНрд╖ рд╣реИ, рд╡реЗ рдУрдкрдирд╢реАрдЯ рдореЗрдВ рдПрдкрд┐рд╕ рдХреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдорд╛рдиреНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

oc рдХреЛ apiservices -o = рдХрд╕реНрдЯрдо-рдХреЙрд▓рдо = " рдирд╛рдо: .metadata.name , рд╕реНрдерд┐рддрд┐: .status.conditions [0] .status"

рдПрдкреАрдЖрдИ рдЬреЛ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рдЙрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдкреЙрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдпрд╛ рдЙрд╕ рдПрдкреАрдЖрдИ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рддрд┐рдЧрдорди, рдЗрд╕рдХреЗ рдмрд╛рдж рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

$ рдорд╣рд╛рд╕рд╛рдЧрд░ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ

рдФрд░ рддреИрдпрд╛рд░, рд╡реНрдпрд╛рдкрд╛рд░ рддрдп !!

рдЕрдкрдиреА рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдкрдорд╛рдирдЬрдирдХ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рд╣рд░ рдХреЛрдИ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рд╣реИред ЁЯСО

рд╣рд░ рдХреЛрдИ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛рдБ рд╕рд╣рдордд рд╣реИ?

Thu рдкрд░, рдЕрдкреНрд░реИрд▓ 30, 2020 рдХреЛ 17:58 рдмрдЬреЗ TheAkito рд╕реВрдЪрдирд╛рдПрдВ @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдЕрдкрдиреА рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдкрдорд╛рдирдЬрдирдХ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рд╣рд░ рдХреЛрдИ
рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рд╣реИред ЁЯСО

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/kubernetes/kubernetes/issues/60807#issuecomment-622137770 ,
рдпрд╛ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/ALGMKB6K4OU4X3XOYMALOBLRPHYCDANCNFSM4ETUOEPA
ред

>

рдХреНрд░рд┐рд╕, рд▓реАрдб рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЯ @ brace.ai

-

рдЧреЛрдкрдиреАрдпрддрд╛ рд╕реВрдЪрдирд╛: рдпрд╣ рдИрдореЗрд▓ рдПрдХрдорд╛рддреНрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╣реИ
рдЗрдЪреНрдЫрд┐рдд рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ (рдУрдВ) рдФрд░ рдЧреЛрдкрдиреАрдп, рдорд╛рд▓рд┐рдХрд╛рдирд╛ рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реАред рдпрджрд┐ рдЖрдк рдЗрдЪреНрдЫрд┐рдд рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдк рд╣реИрдВ
рдЕрдзрд┐рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧ, рд╕рдореАрдХреНрд╖рд╛, рдкреНрд░рд╕рд╛рд░, рдирдХрд▓ рдпрд╛ рдЖрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ
рдЗрд╕ рд╕рдВрджреЗрд╢ рдпрд╛ рдЗрд╕рдХреЗ рдЕрдиреБрд▓рдЧреНрдирдХреЛрдВ рдкрд░, рдпрджрд┐ рдХреЛрдИ рд╣реЛ, рдирд┐рд╖рд┐рджреНрдз рд╣реИред рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рд╣реИрдВ
рдЗрдЪреНрдЫрд┐рдд рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛, рдХреГрдкрдпрд╛ рдЙрддреНрддрд░ рдИрдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЗрд╖рдХ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВ рдФрд░
рдореВрд▓ рд╕рдВрджреЗрд╢ рдФрд░ рдХрд┐рд╕реА рднреА рдЕрдиреБрд▓рдЧреНрдирдХ рдХреА рд╕рднреА рдкреНрд░рддрд┐рдпрд╛рдВ рдирд╖реНрдЯ рдпрд╛ рд╣рдЯрд╛ рджреЗрдВред

рддреИрдпрд╛рд░, рдореБрдЭреЗ рдорд╛рдл рдХрд░рдирд╛ рдпрд╣ рдореЗрд░реА рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдерд╛, рдпрд╣ рддрдп рд╣реЛ рдЧрдпрд╛ рдерд╛

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдмрд╣реБрднрд╛рд╖реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдзрд╛рд░ рд╣реИ, рдпрд╣ рдХрд╛рдлреА рдЦрд░рд╛рдм рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдХрд┐рд╕реА рднреА рдЙрдкрдХрд░рдг рдХрд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдХрдо рд╕реЗ рдХрдо рдпрд╣рд╛рдБ рдЬреАрдердм рдкрд░ рдЕрдЪреНрдЫрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреГрдкрдпрд╛ред

@teoincontatto

рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдЕрдВрдХ рдореЗрдВ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреБрдмреЗрдХреЗрд▓ рдХреЗ рдЖрдзреБрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдмреЗрдХреЗрд▓ рджреНрд╡рд╛рд░рд╛ рдЙрдЬрд╛рдЧрд░ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ рдЬрд╣рд╛рдВ kubectl replace --raw рдЙрдкрд▓рдмреНрдз рд╣реИ (рдЬреЛ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ)ред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдкрдХреЛ kubectl proxy рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдЕрдкрдирд╛рдиреА рдкрдбрд╝реЗрдЧреА рдФрд░ curl рд╕рд╛рде рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдмрдЪрдирд╛ рд╣реЛрдЧрд╛ (рдХрд┐ рдХреБрдЫ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЬреИрд╕реЗ рдХрд┐ рдмрд┐рдЬреАрдмреЙрдХреНрд╕ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ)ред рдЗрд╕ рдЙрдореНрдореАрдж рдореЗрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдФрд░ рдХреЛ рдореЗрд░реА рдорджрдж рдХрд░реЗрдЧрд╛ рдЬреЛ рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛:

kubectl get namespace "stucked-namespace" -o json \
            | tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" \
            | kubectl replace --raw /api/v1/namespaces/stucked-namespace/finalize -f -

рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛!

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдмрд╣реБрднрд╛рд╖реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдзрд╛рд░ рд╣реИ, рдпрд╣ рдХрд╛рдлреА рдЦрд░рд╛рдм рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдХрд┐рд╕реА рднреА рдЙрдкрдХрд░рдг рдХрд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдХрдо рд╕реЗ рдХрдо рдпрд╣рд╛рдБ рдЬреАрдердм рдкрд░ рдЕрдЪреНрдЫрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреГрдкрдпрд╛ред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдмрд╣реБрднрд╛рд╖реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдзрд╛рд░ рд╣реИ, рдпрд╣ рдХрд╛рдлреА рдЦрд░рд╛рдм рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдХрд┐рд╕реА рднреА рдЙрдкрдХрд░рдг рдХрд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдХрдо рд╕реЗ рдХрдо рдпрд╣рд╛рдБ рдЬреАрдердм рдкрд░ рдЕрдЪреНрдЫрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреГрдкрдпрд╛ред

рдлрд┐рд░ рднреА рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдорд╛рдлрд╝ рдХрд░рджреЛред рдореИрдВрдиреЗ рдЧрд▓рддреА рд╕реЗ рдЕрдВрдЧреВрдареЗ рдХреНрд▓рд┐рдХ рдХрд░ рджрд┐рдП рд╣реЛрдВрдЧреЗред
рд╣рд╛рдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЙрдкрдХрд░рдг рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред
рд╡реЗ, рдЬреЛ рдПрдХ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЕрдВрдЧреВрдареЗ рдХреЛ рджреЗ рд░рд╣реЗ рд╣реИрдВ, рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

рд▓рдЧрднрдЧ рд╣рд░ рд╕рдордп рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣ рд╕реАрдЖрд░рдбреА рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред CRD рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдпрджрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЙрд╕ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЖрдк рдЕрдВрддрд┐рдо рдирд╛рдо рдФрд░ рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛рдХрд░ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдЕрдВрдХ рдореЗрдВ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреБрдмреЗрдХреЗрд▓ рдХреЗ рдЖрдзреБрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдмреЗрдХреЗрд▓ рджреНрд╡рд╛рд░рд╛ рдЙрдЬрд╛рдЧрд░ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ рдЬрд╣рд╛рдВ kubectl replace --raw рдЙрдкрд▓рдмреНрдз рд╣реИ (рдЬреЛ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ)ред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдкрдХреЛ kubectl proxy рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдЕрдкрдирд╛рдиреА рдкрдбрд╝реЗрдЧреА рдФрд░ curl рд╕рд╛рде рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдмрдЪрдирд╛ рд╣реЛрдЧрд╛ (рдХрд┐ рдХреБрдЫ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЬреИрд╕реЗ рдХрд┐ рдмрд┐рдЬреАрдмреЙрдХреНрд╕ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ)ред рдЗрд╕ рдЙрдореНрдореАрдж рдореЗрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдФрд░ рдХреЛ рдореЗрд░реА рдорджрдж рдХрд░реЗрдЧрд╛ рдЬреЛ рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛:

kubectl get namespace "stucked-namespace" -o json \
            | tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" \
            | kubectl replace --raw /api/v1/namespaces/stucked-namespace/finalize -f -

@teoincontatto рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣ рдЖрдЦрд┐рд░рдХрд╛рд░ рдХрд╛рдо рдХрд░ рдЧрдпрд╛!

рдХрднреА-рдХрднреА рдХреЗрд╡рд▓ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдХрдЯ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдСрдирд▓рд╛рдЗрди рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ (рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ finalizers рджрд╛рдпрд░ рдФрд░ рд╕рд╣реЗрдЬреЗрдВ)ред
рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рджреВрд╕рд░реЛрдВ рд╕реЗ рдХреБрдЫ рдирдпрд╛ рддрд░реАрдХрд╛ рдорд┐рд▓рд╛ред

kubectl get namespace linkerd -o json > linkerd.json

# Where:/api/v1/namespaces/<your_namespace_here>/finalize
kubectl replace --raw "/api/v1/namespaces/linkerd/finalize" -f ./linkerd.json

рдЙрд╕ рдЖрджреЗрд╢ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдирд╛рдо рд╕реНрдерд╛рди рдЕрдм рдЖрдкрдХреЗ рдирд╛рдорд╕реНрдерд╛рди рд╕реВрдЪреА рд╕реЗ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП .. рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рди рдХреЗрд╡рд▓ namespace рдмрд▓реНрдХрд┐ рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ kubectl edit annoying-ns : рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрдирд▓рд┐рдЬрд╝рд░реНрд╕ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╣рдЯрд╛рдХрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛

рд╣рдореНрдо ... рдореБрдЭреЗ рдЕрднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ :)
рдЖрдЬ рдореИрдВрдиреЗ 1.15 рд╕реЗ 1.16 рддрдХ рдЕрдкрдиреЗ eks рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ред
рд╕рдм рдХреБрдЫ рдЕрдм рддрдХ рдареАрдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рд╡рд┐рдХрд╛рд╕ ns "configcluster" рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ "рдбреИрдореЗрдЬреНрдб" рдерд╛ред
рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рд╕рд╛рдл рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рддрд╛ рд╣реВрдВред

k рд╣рдЯрд╛рдирд╛ ns configcluster
....
рдЕрдм рдпрд╣ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИ (3h +): /

$ kubectl get namespace configcluster -o yaml
apiVersion: v1
kind: Namespace
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"configcluster"}}
  creationTimestamp: "2020-06-19T06:40:15Z"
  deletionTimestamp: "2020-06-19T09:19:16Z"
  name: configcluster
  resourceVersion: "22598109"
  selfLink: /api/v1/namespaces/configcluster
  uid: e50f0b53-b21e-4e6e-8946-c0a0803f031b
spec:
  finalizers:
  - kubernetes
status:
  conditions:
  - lastTransitionTime: "2020-06-19T09:19:21Z"
    message: 'Discovery failed for some groups, 1 failing: unable to retrieve the
      complete list of server APIs: metrics.k8s.io/v1beta1: the server is currently
      unable to handle the request'
    reason: DiscoveryFailed
    status: "True"
    type: NamespaceDeletionDiscoveryFailure
  - lastTransitionTime: "2020-06-19T09:19:22Z"
    message: All legacy kube types successfully parsed
    reason: ParsedGroupVersions
    status: "False"
    type: NamespaceDeletionGroupVersionParsingFailure
  - lastTransitionTime: "2020-06-19T09:19:22Z"
    message: All content successfully deleted
    reason: ContentDeleted
    status: "False"
    type: NamespaceDeletionContentFailure
  phase: Terminating

рдкреИрд░ рдХреЗ рдореБрджреНрджреЗ рдореЗрдВ рдЗрд╕ рдХрд╛рдВрдЯреЗ рдХреЗ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рдЖрдиреЗ рд╕реЗ рд╣рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдХреИрд╕реЗ рдорд┐рд▓реЗрдЧрд╛?

рд╢реБрдХреНрд░ рдкрд░, 19 рдЬреВрди, 2020 рдХреЛ рд╕реБрдмрд╣ 4:46 рдмрдЬреЗ рдПрдВрдбреНрд░рд┐рдпрд╛рд╕ рд╣реБрдореИрди рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

рд╣рдореНрдо ... рдореБрдЭреЗ рдЕрднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ :)
рдЖрдЬ рдореИрдВрдиреЗ 1.15 рд╕реЗ 1.16 рддрдХ рдЕрдкрдиреЗ eks рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ред
рд╕рдм рдХреБрдЫ рдЕрдм рддрдХ рдареАрдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рд╡рд┐рдХрд╛рд╕ ns "configcluster" рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ "рдбреИрдореЗрдЬреНрдб" рдерд╛ред
рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рд╕рд╛рдл рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рддрд╛ рд╣реВрдВред

k рд╣рдЯрд╛рдирд╛ ns configcluster
....
рдЕрдм рдпрд╣ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИ (3h +): /

$ kubectl рдХреЛ рдирд╛рдо рд╕реНрдерд╛рди рд╡рд┐рдиреНрдпрд╛рд╕ -o yaml рдорд┐рд▓рддрд╛ рд╣реИ
рдПрдкреАрд╡рд░реНрд╕рди: v1
рддрд░рд╣: рдирд╛рдорд╕реНрдерд╛рди
рдореЗрдЯрд╛рдбрд╛рдЯрд╛:
рдПрдиреЛрдЯреЗрд╢рди:
kubectl.kubernetes.io/last-applied-configuration: |
{ "ApiVersion": "v1" "рдкреНрд░рдХрд╛рд░": "рдирд╛рдо рд╕реНрдерд╛рди", "рдореЗрдЯрд╛рдбрд╛рдЯрд╛": { "рдПрдиреЛрдЯреЗрд╢рди": {}, "рдирд╛рдо": "configcluster"}}
рд╕реГрд╖реНрдЯрд┐рдкреНрд░рдорд╛рдг: "2020-06-19T06: 40: 15Z"
рдбрд┐рд▓реАрдЯрдореЗрдВрдЯрд╕реНрдЯреИрдореНрдк: "2020-06-19T09: 19: 16Z"
рдирд╛рдо: configcluster
рд╕рдВрд╕рд╛рдзрди рд╡рд┐рдЪрд▓рди: "22598109"
selfLink: / api / v1 / namespaces / configcluster
uid: e50f0b53-b21e-4e6e-8946-c0a0803f00b
рдХрд▓реНрдкрдирд╛:
finalizers:

  • Kubernetes
    рд╕реНрдерд┐рддрд┐:
    рд╢рд░реНрддреЗрдБ:
  • lastTransitionTime: "2020-06-19T09: 19: 21Z"
    рд╕рдВрджреЗрд╢: 'рдХреБрдЫ рд╕рдореВрд╣реЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдХрд╡рд░реА рд╡рд┐рдлрд▓ рд░рд╣реА, 1 рдЕрд╕рдлрд▓: рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде
    рд╕рд░реНрд╡рд░ API рдХреА рдкреВрд░реА рд╕реВрдЪреА: metrics.k8s.io/v1beta1: рд╕рд░реНрд╡рд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣реИ
    рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде '
    рдХрд╛рд░рдг: рдбрд┐рд╕реНрдХрд╡рд░реА
    рд╕реНрдерд┐рддрд┐: "рд╕рддреНрдп"
    рдкреНрд░рдХрд╛рд░: NamespaceDeletionDiscoveryFailure
  • lastTransitionTime: "2020-06-19T09: 19: 22Z"
    рд╕рдВрджреЗрд╢: рд╕рднреА рд▓реАрдЧреЗрд╕реА рдХреНрдпреВрдм рдкреНрд░рдХрд╛рд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЧрдП
    рдХрд╛рд░рдг: ParsedGroupVersions
    рд╕реНрдерд┐рддрд┐: "рдЧрд▓рдд"
    рдкреНрд░рдХрд╛рд░: NamespaceDeletionGroupVersionParsingFailure
  • lastTransitionTime: "2020-06-19T09: 19: 22Z"
    рд╕рдВрджреЗрд╢: рд╕рднреА рд╕рд╛рдордЧреНрд░реА рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣рдЯрд╛ рджреА рдЧрдИ
    рдХрд╛рд░рдг: ContentDeleted
    рд╕реНрдерд┐рддрд┐: "рдЧрд▓рдд"
    рдкреНрд░рдХрд╛рд░: NamespaceDeletionContentFailure
    рдЪрд░рдг: рд╕рдорд╛рдкреНрддрд┐

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/kubernetes/kubernetes/issues/60807#issuecomment-646543073 ,
рдпрд╛ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AFLKRCLHIZ77X2Z3F5GAOCTRXMXVTANCNFSM4ETUOEPA
ред

@bobhenkel рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдпрд╣ рдореБрджреНрджрд╛ рдмрдВрдж рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЛрдИ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИ (рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐рд╕реА рднреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╕рдВрдмрдВрдз рд╣реИ)ред рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рд╣рд╛рдпрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдКрдкрд░ рджрд┐рдП рдЧрдП рдереНрд░реЗрдб рдХреЛ рдкрдврд╝реЗрдВ, рд╡рд╣рд╛рдВ рд╕рд▓рд╛рд╣ рдХреЗ рдХреБрдЫ рдЕрдЪреНрдЫреЗ рдЯреБрдХрдбрд╝реЗ рд╣реИрдВ (рдФрд░ рдХреБрдЫ рдЦрд░рд╛рдм рднреА)ред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ GCP рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрд╡рд╛ рдХрдВрд╕реЛрд▓ рд╕реЗ рдЕрдкрдиреЗ рдЗрдирдЧреНрд░реЗрд╕ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдирд╛ рдкрдбрд╝рд╛ред рдореИрдВрдиреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдлреНрд░рдВрдЯреЗрдВрдб рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдерд╛ред рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рддреЛ рдирд╛рдо рд╕реНрдерд╛рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЛ рд╣рдЯрд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдП рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рдХрдЯ рдореЗрдВ рд░рд╛рдЬреНрдп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрд▓рдЧ рдереАред

рдореИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдирдЧреНрд░реЗрдиреНрдб рдлреНрд░рдВрдЯреЗрдВрдб рдХреНрд░рд┐рдПрд╢рди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред

рдХрднреА-рдХрднреА рдХреЗрд╡рд▓ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдХрдЯ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдСрдирд▓рд╛рдЗрди рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ (рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ finalizers рджрд╛рдпрд░ рдФрд░ рд╕рд╣реЗрдЬреЗрдВ)ред
рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рджреВрд╕рд░реЛрдВ рд╕реЗ рдХреБрдЫ рдирдпрд╛ рддрд░реАрдХрд╛ рдорд┐рд▓рд╛ред

kubectl get namespace linkerd -o json > linkerd.json

# Where:/api/v1/namespaces/<your_namespace_here>/finalize
kubectl replace --raw "/api/v1/namespaces/linkerd/finalize" -f ./linkerd.json

рдЙрд╕ рдЖрджреЗрд╢ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдирд╛рдо рд╕реНрдерд╛рди рдЕрдм рдЖрдкрдХреЗ рдирд╛рдорд╕реНрдерд╛рди рд╕реВрдЪреА рд╕реЗ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП .. рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рди рдХреЗрд╡рд▓ namespace рдмрд▓реНрдХрд┐ рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред

рдЖрдк рдПрдХ рд╕реНрдЯрд╛рд░ рд╣реИрдВ рдЬрд┐рд╕рдиреЗ рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛

рдХрднреА-рдХрднреА рдХреЗрд╡рд▓ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдХрдЯ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдСрдирд▓рд╛рдЗрди рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ (рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ finalizers рджрд╛рдпрд░ рдФрд░ рд╕рд╣реЗрдЬреЗрдВ)ред
рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рджреВрд╕рд░реЛрдВ рд╕реЗ рдХреБрдЫ рдирдпрд╛ рддрд░реАрдХрд╛ рдорд┐рд▓рд╛ред

kubectl get namespace linkerd -o json > linkerd.json

# Where:/api/v1/namespaces/<your_namespace_here>/finalize
kubectl replace --raw "/api/v1/namespaces/linkerd/finalize" -f ./linkerd.json

рдЙрд╕ рдЖрджреЗрд╢ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдирд╛рдо рд╕реНрдерд╛рди рдЕрдм рдЖрдкрдХреЗ рдирд╛рдорд╕реНрдерд╛рди рд╕реВрдЪреА рд╕реЗ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП .. рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рди рдХреЗрд╡рд▓ namespace рдмрд▓реНрдХрд┐ рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред

рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╣ рд╣реИ рдЬрд┐рд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред рдзрдиреНрдпрд╡рд╛рдж!

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рд╕реНрд╡реАрдХреГрдд" рдЙрддреНрддрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдЗрд╕рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рдЬрдбрд╝ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд░ рджрд┐рдпрд╛ рд╣реИ!

рдЙрдкрд░реЛрдХреНрдд рд▓рд┐рдВрдХ рд╕реЗ рд▓реЗрдВ:

рдпрд╣ рд╕рд╣реА рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЙрддреНрдкрд╛рджрди рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВред

рдЖрдЬ рдореИрдВ рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдкрдбрд╝ рдЧрдпрд╛ред рдлрд╛рдЗрдирд▓ рдХреЛ рд╣рдЯрд╛рдХрд░ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рдмрдЪреЗ рд╣реБрдП рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡рд┐рд▓реЛрдкрди рдХреЛ рдкреВрд░реНрдг рд╕реЗ рдХреНрдпрд╛ рд░рдЦрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

Https://github.com/kubernetes/kubernetes/issues/60807#issuecomment -524772920 рджреЗрдЦреЗрдВ

(рдпрд╣ рднреА, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, 'рдХреБрдмреЗрдЯрдХреНрдЯреЗрд▓ рдЧреЗрдЯ рдСрд▓' рд╕рднреА рдЪреАрдЬреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рд▓рд┐рдВрдХ рдореЗрдВ рд╕рдорд╛рди рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)

рдореЗрд░рд╛ рдорд╛рдорд▓рд╛ - 'рдкреНрд░рдорд╛рдгрд┐рдд-рдкреНрд░рдмрдВрдзрдХ' рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛рдирд╛ред 'Kubectl get apiservice -o yaml' рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдореИрдВрдиреЗ APIService 'v1beta1.admission.certmanager.k8s.io' рдХреЛ рд╕реНрдЯреЗрдЯрд╕ = рдЧрд▓рдд рдХреЗ рд╕рд╛рде рдкрд╛рдпрд╛ред рдпрд╣ рдПрдкрд┐рд╕реЗрд╡рд╛ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ-рдореИрдиреЗрдЬрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдерд╛, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЕрднреА рдбрд┐рд▓реАрдЯ рдХрд┐рдпрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, 10 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ 'kubectl delete apiservice v1beta1.admission.certmanager.k8s.io' рдирд╛рдо рджрд┐рдпрд╛, рдирд╛рдо рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ред

рдЙрдореНрдореАрдж рд╣реИ рдХреА рд╡реЛ рдорджрдж рдХрд░рджреЗред


рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдореИрдВрдиреЗ рд╣рд░ рдШрдВрдЯреЗ CronJob рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛ рд▓рд┐рдЦрд╛ рдерд╛ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдорд╛рдкреНрддрд┐ рдирд╛рдорд╕реНрдерд╛рди рд╣рдЯрд╛рддрд╛ рд╣реИред

рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдБ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/oze4/service.remove-terminating-namespaces

рдореИрдВрдиреЗ рд╣рд░ рдШрдВрдЯреЗ CronJob рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛ рд▓рд┐рдЦрд╛ рдерд╛ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдорд╛рдкреНрддрд┐ рдирд╛рдорд╕реНрдерд╛рди рд╣рдЯрд╛рддрд╛ рд╣реИред

рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдБ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/oze4/service.remove-terminating-namespaces

рдЕрднреА рддрдХ рдПрдХ рдФрд░ oneliner:

for ns in $(kubectl get ns --field-selector status.phase=Terminating -o jsonpath='{.items[*].metadata.name}'); do  kubectl get ns $ns -ojson | jq '.spec.finalizers = []' | kubectl replace --raw "/api/v1/namespaces/$ns/finalize" -f -; done

рд▓реЗрдХрд┐рди рдЕрдЯрдХреЗ рд╣реБрдП рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЛ рд╣рдЯрд╛рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрдкрд╛рдп рдирд╣реАрдВ рд╣реИред рд╕рд╣реА рддрд░реАрдХрд╛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдЕрдЯрдХрд╛ рд╣реБрдЖ рд╣реИред рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░рдг рдПрдХ рдЕрдиреБрдкрд▓рдмреНрдз рдПрдкреАрдЖрдИ рд╕реЗрд╡рд╛ рд╣реИ рдЬреЛ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рд╕реЗ рд░реЛрдХрддреА рд╣реИред
рдпрд╣рд╛рдБ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЪрд╛рдХреВ рдХреЛ рдареАрдХ рд╕реЗ рдирд╣реАрдВ рд╣рдЯрд╛рдпрд╛ рд╣реИ:

$ kubectl get apiservice|grep False
NAME                                   SERVICE                             AVAILABLE   AGE
v1beta1.custom.metrics.k8s.io          knative-serving/autoscaler          False (ServiceNotFound)   278d

рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ

k delete apiservice v1beta1.custom.metrics.k8s.io
apiservice.apiregistration.k8s.io "v1beta1.custom.metrics.k8s.io" deleted
$  k create ns test2
namespace/test2 created
$ k delete ns test2
namespace "test2" deleted
$ kgns test2
Error from server (NotFound): namespaces "test2" not found  

рдореИрдВрдиреЗ рд╣рд░ рдШрдВрдЯреЗ CronJob рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛ рд▓рд┐рдЦрд╛ рдерд╛ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдорд╛рдкреНрддрд┐ рдирд╛рдорд╕реНрдерд╛рди рд╣рдЯрд╛рддрд╛ рд╣реИред

рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдБ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/oze4/service.remove-terminating-namespaces

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ред

рдореИрдВ рдПрдХ рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ k8s рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ 1.18 рдкрд░ рдПрдХ рд╕рдорд╛рди рдореБрджреНрджрд╛ рдерд╛ рдФрд░ рд╢рд╛рдпрдж рджреВрд╕рд░реЛрдВ рдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреЛрдЯ рдЬреЛрдбрд╝ рд░рд╣рд╛ рдерд╛ред рдореИрдВ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдПрдкреАрдЖрдИ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╕реНрдЯрдо рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ред рдЗрд╕реЗ рдкреБрдирдГ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрди k8 рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛рдиреЗ рдкрд░ рд░реЛрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдПрдкреА рдПрдВрдбрдкреЙрдЗрдВрдЯ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрд╛ред рдПрдХ рдФрд░ рдиреЗрдорд╕реНрдкреЗрд╕ рдкрд░ рд╡рд╛рдкрд╕ рдбрд╛рд▓ рджрд┐рдпрд╛, рд╕рдм рдХреБрдЫ рддреБрд░рдВрдд рдордВрдЬреВрд░реА рджреЗ рджреАред

рдпрд╣ рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдерд╛ред

Discovery failed for some groups, 4 failing: unable to retrieve the
complete list of server APIs: custom.metrics.k8s.io/v1beta1: the server is currently
unable to handle the request, custom.metrics.k8s.io/v1beta2: the server is currently
unable to handle the request, external.metrics.k8s.io/v1beta1: the server is
currently unable to handle the request, metrics.k8s.io/v1beta1: the server is

рдЕрднреА рддрдХ рдПрдХ рдФрд░ oneliner:

for ns in $(kubectl get ns --field-selector status.phase=Terminating -o jsonpath='{.items[*].metadata.name}'); do  kubectl get ns $ns -ojson | jq '.spec.finalizers = []' | kubectl replace --raw "/api/v1/namespaces/$ns/finalize" -f -; done

рд▓реЗрдХрд┐рди рдЕрдЯрдХреЗ рд╣реБрдП рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЛ рд╣рдЯрд╛рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрдкрд╛рдп рдирд╣реАрдВ рд╣реИред рд╕рд╣реА рддрд░реАрдХрд╛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдЕрдЯрдХрд╛ рд╣реБрдЖ рд╣реИред рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░рдг рдПрдХ рдЕрдиреБрдкрд▓рдмреНрдз рдПрдкреАрдЖрдИ рд╕реЗрд╡рд╛ рд╣реИ рдЬреЛ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рд╕реЗ рд░реЛрдХрддреА рд╣реИред
рдпрд╣рд╛рдБ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЪрд╛рдХреВ рдХреЛ рдареАрдХ рд╕реЗ рдирд╣реАрдВ рд╣рдЯрд╛рдпрд╛ рд╣реИ:

$ kubectl get apiservice|grep False
NAME                                   SERVICE                             AVAILABLE   AGE
v1beta1.custom.metrics.k8s.io          knative-serving/autoscaler          False (ServiceNotFound)   278d

рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ

k delete apiservice v1beta1.custom.metrics.k8s.io
apiservice.apiregistration.k8s.io "v1beta1.custom.metrics.k8s.io" deleted
$  k create ns test2
namespace/test2 created
$ k delete ns test2
namespace "test2" deleted
$ kgns test2
Error from server (NotFound): namespaces "test2" not found  

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдмрд╕реЗ рд╕рд╛рдл рдПрдХ рд▓рд╛рдЗрдирд░! рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА "рд╕рдорд╛рдзрд╛рди" рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореВрд▓ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ

рдпрд╣ рд╕рдВрджреЗрд╢ рдлреИрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: рдореБрд╕реНрдХрд╛рди: "рдЕрднреА рддрдХ рдПрдХ рдФрд░ рдПрдХ рд▓рд╛рдЗрдирд░" рдирд╣реАрдВред

рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдПрдХ рд▓рд╛рдЗрдирд░ рд╕рдмрд╕реЗ рд╕рд╛рдл! рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА "рд╕рдорд╛рдзрд╛рди" рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореВрд▓ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд╕рдорд╛рдзрд╛рди рд╕рднреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдореВрд▓ рдХрд╛рд░рдгреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ: https://github.com/thyarles/knsk

@ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛!

рдХреГрдкрдпрд╛ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП modify finalize рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреА

image

рдХреГрдкрдпрд╛ рдирд╛рдо рд╕реНрдерд╛рди рд╕рдорд╛рдкреНрддрд┐ рдХрд╛ рдХрд╛рд░рдг рдкрддрд╛ рдХрд░реЗрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬреНрдЮрд╛рдд рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рджрд┐рд╢рд╛-рдирд┐рд░реНрджреЗрд╢

  • рдлрд▓реА рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛
  • рдкреНрд░рдорд╛рдгрд┐рдд-рдкреНрд░рдмрдВрдзрдХ webhook рдмреНрд▓реЙрдХ secrte

рдореИрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛:

# sudo kubectl get ns
NAME                   STATUS        AGE
cattle-global-data     Terminating   8d
cattle-global-nt       Terminating   8d
cattle-system          Terminating   8d
cert-manager           Active        8d
default                Active        10d
ingress-nginx          Terminating   9d
kube-node-lease        Active        10d
kube-public            Active        10d
kube-system            Active        10d
kubernetes-dashboard   Terminating   4d6h
local                  Active        8d
p-2sfgk                Active        8d
p-5kdx9                Active        8d
# sudo kubectl get all -n kubernetes-dashboard
No resources found in kubernetes-dashboard namespace.
# sudo kubectl get namespace kubernetes-dashboard  -o json 
{
    "apiVersion": "v1",
    "kind": "Namespace",
    "metadata": {
        "annotations": {
            "cattle.io/status": "{\"Conditions\":[{\"Type\":\"ResourceQuotaInit\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2020-09-29T01:15:46Z\"},{\"Type\":\"InitialRolesPopulated\",\"Status\":\"True\",\"Message\":\"\",\"LastUpdateTime\":\"2020-09-29T01:15:46Z\"}]}",
            "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"kubernetes-dashboard\"}}\n",
            "lifecycle.cattle.io/create.namespace-auth": "true"
        },
        "creationTimestamp": "2020-09-29T01:15:45Z",
        "deletionGracePeriodSeconds": 0,
        "deletionTimestamp": "2020-10-02T07:59:52Z",
        "finalizers": [
            "controller.cattle.io/namespace-auth"
        ],
        "managedFields": [
            {
                "apiVersion": "v1",
                "fieldsType": "FieldsV1",
                "fieldsV1": {
                    "f:metadata": {
                        "f:annotations": {
                            "f:cattle.io/status": {},
                            "f:lifecycle.cattle.io/create.namespace-auth": {}
                        },
                        "f:finalizers": {
                            ".": {},
                            "v:\"controller.cattle.io/namespace-auth\"": {}
                        }
                    }
                },
                "manager": "Go-http-client",
                "operation": "Update",
                "time": "2020-09-29T01:15:45Z"
            },
            {
                "apiVersion": "v1",
                "fieldsType": "FieldsV1",
                "fieldsV1": {
                    "f:metadata": {
                        "f:annotations": {
                            ".": {},
                            "f:kubectl.kubernetes.io/last-applied-configuration": {}
                        }
                    }
                },
                "manager": "kubectl-client-side-apply",
                "operation": "Update",
                "time": "2020-09-29T01:15:45Z"
            },
            {
                "apiVersion": "v1",
                "fieldsType": "FieldsV1",
                "fieldsV1": {
                    "f:status": {
                        "f:phase": {}
                    }
                },
                "manager": "kube-controller-manager",
                "operation": "Update",
                "time": "2020-10-02T08:13:49Z"
            }
        ],
        "name": "kubernetes-dashboard",
        "resourceVersion": "3662184",
        "selfLink": "/api/v1/namespaces/kubernetes-dashboard",
        "uid": "f1944b81-038b-48c2-869d-5cae30864eaa"
    },
    "spec": {},
    "status": {
        "conditions": [
            {
                "lastTransitionTime": "2020-10-02T08:13:49Z",
                "message": "All resources successfully discovered",
                "reason": "ResourcesDiscovered",
                "status": "False",
                "type": "NamespaceDeletionDiscoveryFailure"
            },
            {
                "lastTransitionTime": "2020-10-02T08:11:49Z",
                "message": "All legacy kube types successfully parsed",
                "reason": "ParsedGroupVersions",
                "status": "False",
                "type": "NamespaceDeletionGroupVersionParsingFailure"
            },
            {
                "lastTransitionTime": "2020-10-02T08:11:49Z",
                "message": "All content successfully deleted, may be waiting on finalization",
                "reason": "ContentDeleted",
                "status": "False",
                "type": "NamespaceDeletionContentFailure"
            },
            {
                "lastTransitionTime": "2020-10-02T08:11:49Z",
                "message": "All content successfully removed",
                "reason": "ContentRemoved",
                "status": "False",
                "type": "NamespaceContentRemaining"
            },
            {
                "lastTransitionTime": "2020-10-02T08:11:49Z",
                "message": "All content-preserving finalizers finished",
                "reason": "ContentHasNoFinalizers",
                "status": "False",
                "type": "NamespaceFinalizersRemaining"
            }
        ],
        "phase": "Terminating"
    }

#  sudo kubectl version

Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.2", GitCommit:"f5743093fd1c663cb0cbc89748f730662345d44d", GitTreeState:"clean", BuildDate:"2020-09-16T13:41:02Z", GoVersion:"go1.15", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.2", GitCommit:"f5743093fd1c663cb0cbc89748f730662345d44d", GitTreeState:"clean", BuildDate:"2020-09-16T13:32:58Z", GoVersion:"go1.15", Compiler:"gc", Platform:"linux/amd64"}

рдЕрдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк etcdctl рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/peer.crt \
--key=/etc/kubernetes/pki/etcd/peer.key \
get /registry --prefix | grep <namespace>

рдмрд╕ рдЕрдкрдиреЗ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ

for NS in $(kubectl get ns 2>/dev/null | grep Terminating | cut -f1 -d ' '); do
  kubectl get ns $NS -o json > /tmp/$NS.json
  sed -i '' "s/\"kubernetes\"//g" /tmp/$NS.json
  kubectl replace --raw "/api/v1/namespaces/$NS/finalize" -f /tmp/$NS.json
done
/tmp/$NS.json

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднрд╛рдЧ рдЧрдпрд╛ рдХрд┐ рдПрдирдПрд╕ рдореЗрдВ рдХреЛрдИ рдЭреВрд▓рдиреЗ рд╡рд╛рд▓реЗ k8 рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рдереЗред рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВрдиреЗ рдЯрд░реНрдорд┐рдиреЗрдЯреЗрдб рдирд╛рдо рд╕реЗ рдЕрдЯрдХреЗ рдПрдХ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛

рдЙрджрд╛рд╣рд░рдг :

kubectl get namespace openebs -o json | jq -j '.spec.finalizers=null' > tmp.json 
kubectl replace --raw "/api/v1/namespaces/openebs/finalize" -f ./tmp.json

рд╕рднреА рдЧреЛрдЧрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЬреЛ рд░реИрдВрдЪрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдорд╕реНрдерд╛рди (рдЬреИрд╕реЗ рдорд╡реЗрд╢реА-рдкреНрд░рдгрд╛рд▓реА) рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдЕрдЯрдХ рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдЯрдХрд░рд╛рдП рдереЗ, рдореЗрд░реЗ рд▓рд┐рдП рдирд┐рдореНрди рд╕рдВрд╢реЛрдзрд┐рдд рдХрдорд╛рдВрдб (рдЧреНрд░реАрдмреЛрдЗрд╕ рдореВрд▓) рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛:

for NS in $(kubectl get ns 2>/dev/null | grep Terminating | cut -f1 -d ' '); do
  kubectl get ns $NS -o json > /tmp/$NS.json
  sed -i "s/\"controller.cattle.io\/namespace-auth\"//g" /tmp/$NS.json
  kubectl replace --raw "/api/v1/namespaces/$NS/finalize" -f /tmp/$NS.json
done

рдлреЛрд▓реНрдХреНрд╕ , рд╕рд┐рд░реНрдл FYI, рдЬрдм рдЗрд╕ рдЬреБрдбрд╝реА рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛

рдореИрдВрдиреЗ 10 рдорд┐рдирдЯ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдХрд┐ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЗрд╕ рдПрд╕рдЖрдИрдЬреА рджреАрдк рдЧреЛрддрд╛ рд╕рддреНрд░ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ред

рдпрд╣рд╛рдБ 65 upvotes рдХреЗ рд╕рд╛рде рдПрдХ

рдКрдкрд░ рдХрдИ рдмрд╛рд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдпрд╣ рдорд╛рдзреНрдпрдо рдкреЛрд╕реНрдЯ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЯреВрдЯреА рд╣реБрдИ рдПрдкреАрдЖрдИ рд╕реЗрд╡рд╛ рдХреЛ рдвреВрдВрдвреЗрдВ рдФрд░ рдареАрдХ рдХрд░реЗрдВред

рд╕рднреА рдПрдХ рд▓рд╛рдЗрдирд░ рдЬреЛ рд╕рд┐рд░реНрдл рдиреЗрдорд╕реНрдкреЗрд╕ рдкрд░ рдлрд╛рдЗрдирд▓ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ, рдореВрд▓ рдХрд╛рд░рдг рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рд╕реВрдХреНрд╖реНрдо рд░реВрдк рд╕реЗ рдЯреВрдЯ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рдмрд╛рдж рдореЗрдВ рдХрд╛рдЯ рджреЗрдЧрд╛ред рддреЛ рдХреГрдкрдпрд╛ рдРрд╕рд╛ рдордд рдХрд░реЛред рдореВрд▓ рдХрд╛рд░рдг рдлрд┐рдХреНрд╕ рдЖрдорддреМрд░ рдкрд░ рд╡реИрд╕реЗ рднреА рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рднрд┐рдиреНрдирддрд╛рдПрдВ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдереНрд░реЗрдб рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рд╕рд╣реА рдЙрддреНрддрд░ рд╣реЛрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрдм рдмрдВрдж рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗ рдХрд┐ рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рд╕рдмрд╕реЗ рдиреАрдЪреЗ рд░рд╣рддреА рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
5 / 5 - 1 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

rhohubbuild picture rhohubbuild  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

chowyu08 picture chowyu08  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

errordeveloper picture errordeveloper  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zetaab picture zetaab  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tbchj picture tbchj  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ