Kubernetes lanzó oficialmente v1.26, la estabilidad se ha mejorado significativamente

El 8 de diciembre de 2022, hora del Pacífico, Kubernetes lanzó oficialmente la versión 1.26 con el tema "Electrificante"   .

Como la última versión en 2022, se han agregado muchas funciones nuevas y la estabilidad también se ha mejorado significativamente. Presentaremos la actualización de la versión 1.26 desde las siguientes perspectivas.

Descripción general de la actualización:

  • Kube APIServer:  como punto de entrada para las solicitudes de Kubernetes, esta actualización agrega 4 nuevas funciones KEP y realiza algunas optimizaciones en la compresión de respuesta, y otras 2 funciones también se actualizaron de Alpha a Beta.

  • Nodo:  Aquí ponemos las actualizaciones más estrechamente relacionadas con kubelet, que incluyen principalmente 4 nuevas funciones KEP, y 4 funciones son GA en esta versión.

  • Almacenamiento:  en términos de almacenamiento, se agregó la función de asignación de volúmenes de instantáneas de otros espacios de nombres (espacios de nombres cruzados), y 2 funciones relacionadas con el almacenamiento ingresaron a la etapa Beta, y 3 funciones son oficialmente GA.

  • Red:  es principalmente una actualización de Kube Proxy, incluido un KEP optimizado para el rendimiento, y 2 funciones han ingresado a Beta, y 4 funciones han ingresado oficialmente a GA.

  • Control y coordinación de recursos:  principalmente para la actualización de los controladores de recursos relacionados en kube-controller-manager, también hay 2 nuevas funciones KEP, 2 funciones se actualizaron de Alpha a Beta y 1 función es formalmente GA.

  • Programador:  se agregó principalmente una función KEP importante: PodSchedulingReadiness se usa para controlar cuándo el programador puede programar el Pod, y una función se actualizó de Alfa a Beta.

  • Observabilidad:  En términos de observabilidad, se agrega un nuevo mecanismo para exponer el estado de los componentes: Component Health SLIs Además, se agregan muchos indicadores a cada componente.

  • El comando kubectl, kubeadm y client-go  también tienen algunas optimizaciones y correcciones de errores.

  • Para las funciones que han sido GA, de acuerdo con la estrategia de iteración de versiones de Kubernetes, también se eliminaron 11 Feature Gates en 1.26 Si estas Feature Gates continúan configuradas en el comando del componente, el componente no se iniciará normalmente.

A continuación, echemos un vistazo a algunas de las obsolescencias y cambios de API más importantes que afectan las actualizaciones.

01

Abandonos
y cambios de la API

PR#110618 Kubelet ya no es compatible con la versión v1alpha2 de CRI y el tiempo de ejecución del contenedor conectado debe implementar la versión v1 de la interfaz del tiempo de ejecución del contenedor.

Esto significa que Kubernetes v1.26 no admitirá containerd 1.5.x y versiones anteriores; debe actualizar a containerd 1.6.x o posterior antes de poder actualizar el kubelet del nodo a 1.26.

PR#112306 flowcontrol.apiserver.k8s.io agrega la versión v1beta3 y establece v1beta2 como la versión óptima. En 1.27, v1beta3 se establecerá como la versión óptima.

PR#113336 La característica CSIMigrationvSphere ha sido GA y esta característica no se puede desactivar.

Consejo oficial: no actualice a Kubernetes v1.26 si necesita usar Windows, XFS o bloques sin formato. Puede actualizar después de que vSphere CSI Driver agregue soporte relevante en versiones posteriores a v2.7.x.

PR#113710 --pod-eviction-timeoutflag en el comando kube-controller-manager está en desuso y se eliminó en 1.27 junto con --enable-taint-managerflag.

PR#112643 DynamicKubeletConfig se abandonó en 1.23, la lógica en kubelet se eliminó en 1.24, esta actualización elimina la lógica en FeatureGateDynamicKubeletConfig y APIServer.

PR#112120 Eliminación de algunos indicadores relacionados con klog no válidos en el componente Kube.

02

fue APIServer

KEP-2799  Reducción de tokens de cuenta de servicio basados ​​en secretos

Se agregó Alpha Feature Gate —— LegacyServiceAccountTokenTracking  para controlar si se habilita esta función.

Cuando LegacyServiceAccountTokenTracking está habilitado, el token sa basado en secreto usará la etiqueta kubernetes.io/legacy-token-last-used para registrar la última hora de uso.

KEP-3488  CEL para control de admisión

PR relacionado: PR#113314,PR#113349,PR#112994,PR#112792,PR#112926,PR#112858。

Basado en el lenguaje de expresión de validación KEP-2876 CRD [1] proporcionado por Kubernetes v1.25, esta función agrega un nuevo recurso en admisiónregistration.k8s.io/v1alpha1—ValidatingAdmissionPolicy, que permite la validación de campos cuando no se usa el webhook de validación.

apiVersion: admissionregistration.k8s.io/v1alpha1kind: ValidatingAdmissionPolicymetadata:  name: "demo-policy.example.com"Spec:  failurePolicy: Fail  matchConstraints:    resourceRules:    - apiGroups:   ["apps"]      apiVersions: ["v1"]      operations:  ["CREATE", "UPDATE"]      resources:   ["deployments"]  validations:    - expression: "object.spec.replicas <= 5"

Esto requerirá que el campo spec.replicas del recurso sea menor o igual a 5.

Se agregó Alpha Feature Gate  —— ValidatingAdmissionPolicy para controlar si habilitar esta función

KEP-3352 Descubrimiento agregado PR#113171

Actualmente, los usuarios solo pueden recorrer y solicitar las API de grupo y versión para obtener la API de descubrimiento, pero esta función reduce estas llamadas a solo dos interfaces, /api y /apis.

Se agregó Alpha Feature Gate  - AggregatedDiscoveryEndpoint para controlar si se habilita esta función.

KEP-3325 API de autenticación para obtener atributos de usuario propio PR#111333

En el grupo autenticación/v1alpha1, se agrega un nuevo recurso SelfSubjectReview para que los usuarios puedan consultar su propia información de usuario asignada en Kubernetes.

Y se agregó el comando kubectl alpha auth whoami para facilitar la consulta.

$ kubectl alpha auth whoami -o yamlapiVersion: authentication.k8s.io/v1alpha1kind: SelfSubjectReviewstatus:  userInfo:    username: jane.doe    uid: b79dbf30-0c6a-11ed-861d-0242ac120002    groups:    - students    - teachers    - system:authenticated    extra:      skills:      - reading      - learning      subjects:      - math      - sports

Se agregó Alpha Feature Gate  —— APISelfSubjectAttributesReview para controlar si se habilita esta función.

PR#112193 APIServer agrega el indicador --aggregator-reject-forwarding-redirect, los usuarios pueden establecerlo en falso para continuar reenviando la respuesta de redirección del servidor AA (API agregada), el valor predeterminado es verdadero.

PR#113015 Los recursos personalizados se pueden especificar a través del archivo --encryption-provider-config y estos recursos personalizados se pueden almacenar cifrados en etcd.

Compresión de respuesta

PR#112299 Según las pruebas de carga y los datos de producción recopilados de miles de clústeres de producción de Kubernetes, la comunidad observó que la compresión gzip en Kubernetes APIServer actualmente es subóptima.

PROBLEMA: kubernetes/kubernetes#112296

Aquí hay algunos informes[2] y actas de reuniones[3].

PR#112309 Se agregó el campo DisableCompression en kubeconfig, cuando se establece en verdadero, se requiere que ya no se comprima la respuesta.

PR#112580 Agregue el indicador --disable-compression en kubectl, cuando se establece en verdadero, es necesario no comprimir la respuesta.

Actualización de estabilidad funcional

Alfa -> Beta

Puerta característica KEP
LegacyServiceAccountTokenNoAutoGeneration KEP-2799 Reducción de tokens de cuenta de servicio basados ​​en secretos
APIServerIdentity KEP-1965 identidad de kube-apiserver

03

Nodo (Kubelet)

 Asignación dinámica de recursos  KEP-3063  PR#111023 

Agregue el grupo resource.k8s.io/v1alpha1 y agregue recursos relacionados con la asignación dinámica de recursos en este grupo: 'ResourceClaim', 'ResourceClass', 'ResourceClaimTemplate', 'PodScheduling'.

Se agregó Alpha Feature Gate  —— DynamicResourceAllocation para controlar si se habilita esta función.

La nueva API es más flexible que la funcionalidad de complementos de dispositivo existente de Kubernetes, porque permite que los pods soliciten tipos especiales de recursos, que se pueden proporcionar a nivel de nodo, nivel de clúster o según otros modos establecidos por el usuario.

De manera similar, la estructura Pod también agrega el soporte correspondiente para la asignación dinámica de recursos.

apiVersion: v1kind: Podspec:  containers:  - name: with-resource    image: busybox    command: ["sh", "-c", "set && mount && ls -la /dev/"]    resources:      claims:      - name: resource  resourceClaims:  - name: resource    source:      resourceClaimName: shared-claim      # resourceClaimTemplateName: test-inline-claim-template

KEP-3545  Alineación multinuma mejorada en Topology Manager  PR#112914

Esta función maneja mejor los nodos NUMA (Acceso a memoria no uniforme) mediante la optimización de TopologyManager.

Agregue un nuevo campo topologyManagerPolicyOptions de elemento configurable y el indicador --topology-manager-policy-options a los comandos kubelet config y kubectl respectivamente para establecer una configuración adicional de la política del administrador de topología

Y agregue tres Alpha Feature Gates para controlar la configuración de la política del administrador de topología

  • TopologyManagerPolicyOptions

  • TopologyManagerPolicyAlphaOptions

  • TopologyManagerPolicyBetaOptions

TopologyManagerPolicyOptions controla si se admite la función TopologyManagerPolicyOptions y las otras dos se usan para controlar si se pueden configurar las opciones de nivel alfa y beta de TopologyManagerPolicy.

Por supuesto, TopologyManager Feature Gate debe estar habilitado para usar la función TopologyManager, pero Feature Gate ya está en la etapa Beta y no necesita configurarse activamente.

KEP-3386 Kubelet Evented PLEG para un mejor rendimiento PR#111384

Esta función permite que kubelet reduzca los sondeos periódicos al confiar en las notificaciones de la interfaz de tiempo de ejecución del contenedor (CRI) tanto como sea posible al rastrear el estado del pod en un nodo, lo que reduce el uso de la CPU de kubelet.

Se agregó Alpha Feature Gate  - EventedPLEG para controlar si se habilita esta función.

PR#86139  En versiones anteriores, cuando se usaba httpGet en las devoluciones de llamada del ciclo de vida preStop y postStart del contenedor, incluso si los esquemas estaban configurados en HTTPS, todavía se usaba http para acceder y los encabezados establecidos por el usuario no se aplicaban en la configuración. pedido.

lifecycle:  postStart:    port: 443    httpGet:      scheme: HTTPS    httpHeadlers:    - name: HEADER      value: VALUE

Este PR soluciona estos problemas y, cuando el acceso https es anómalo, recurrirá a la solicitud http. Cuando se produzca el retroceso, se creará un evento LifecycleHTTPFallback para el pod y se actualizará el indicador kubelet_lifecycle_handler_http_fallbacks_total.

Además, se agregó Alpha Feature Gate - ConsistentHTTPGetHandlers.Los  usuarios pueden establecer --feature-gates=ConsistentHTTPGetHandlers=false en el kubelet para desactivar el comportamiento alternativo.

KEP-3503 Windows permite especificar si los pods se agregan al espacio de nombres de red del nodo PR#112961 

Se agregó Alpha Feature Gate  - WindowsHostNetworking para controlar si se habilita esta función.

PR#112414 permite fusionar opciones de varias líneas en /etc/resolv.conf en una configuración de una sola línea en Pods.

options ndots:1 attempts:3options ndots:1 attempts:3 ndots:5

->

options ndots:5 attempts:3

ARREGLO DEL FALLO

PR#113041 Se solucionó un problema por el que kubelet seleccionaba el contenedor incorrecto debido a nombres de contenedor duplicados debido a lifecycle.preStop al ejecutar kubectl exec.

PR#108832 Cuando el contenedor tiene limit.cpu configurado, pero request.cpu es "0", cgroups cpuShares toma el valor mínimo de 2 en lugar de usar limit.cpu.

PR#112184 Cuando kubelet solo establece --cloud-provider o --node-ip, se asegurará de borrar la anotación no válida en el nodo: alpha.kubernetes.io/provided-node-ip.

PR#113481 Arreglar los registros de kubectl --marcas de tiempo Al ver los registros, aparece el problema de las marcas de tiempo caóticas y aleatorias.

PR#112518 Se solucionó el problema por el cual los pods continuaban ejecutándose en nodos contaminados con las contaminaciones NoExecute cuando la puerta de características PodDisruptionConditions estaba habilitada.

PR#112123 Establezca el valor mínimo de cpuCFSQuotaPeriod de 1us a 1ms, establecer el valor por debajo de 1ms fallará la verificación.

PR relacionado: PR#112077,PR#111520,PR#63437  

Actualización de estabilidad funcional

Beta -> GA

Puerta característica KEP
Administrador de CPU KEP-3057 Graduado de CPUManager a GA
Complementos de dispositivo Administrador de dispositivos graduado KEP-3573 para GA
KubeletCredentialProviders KEP-2133 Proveedor de credenciales de Kubelet
WindowsHostProcessContainers KEP-1981 Compatibilidad con contenedores privilegiados de Windows

04

almacenamiento

KEP-3294  Aprovisionar volúmenes a partir de instantáneas de espacios de nombres cruzados

PR relacionados: PR#113186, PR#kubernetes-csi/external-rpovisioner#805

Antes de Kubernetes 1.26, con VolumeSnapshot, los usuarios podían asignar volúmenes a partir de instantáneas. Pero no puede vincularse a VolumeSnapshots en otros espacios de nombres en PersistentVolumeClaim. ​​​​​​​​

apiVersion: v1kind: PersistentVolumeClaimspec:  storageClassName: csi-hostpath-sc  accessModes:  - ReadWriteOnce  resources:    requests:      storage: 1Gi  dataSourceRef:    apiGroup: snapshot.storage.k8s.io    kind: VolumeSnapshot    name: new-snapshot-demo    namespace: prod  volumeMode: Filesystem

Esta función permite a los usuarios asignar volúmenes de instantáneas en espacios de nombres configurando el campo recientemente agregado spec.dataSourceRef.namespace en PVC

Se agregó Alpha Feature Gate  —— CrossNamespaceVolumeDataSource para controlar si habilitar esta función

Actualización de estabilidad funcional

Alfa -> Beta

Puerta característica KEP
RetroactiveDefaultStorageClassRetroactiveDefaultStorageClass KEP-3333 Asignación de clase de almacenamiento predeterminada retroactiva

NodeOutOfServiceVolumeDetach

KEP-2268 Apagado no correcto del nodo

Beta -> GA

Puerta característica KEP
CSIMigrationAzureFile Complemento de almacenamiento en árbol KEP-625 para migración de controlador CSI
CSIMigrationvSphere KEP-1491 Migración de controlador de vSphere in-tree a CSI
DelegateFSGroupToCSIDriver KEP-2317 Permitir que Kubernetes suministre el fsgroup del pod al controlador CSI en el montaje

05

red

PR#110268 Optimice el rendimiento de kube-proxy, solo envía las reglas modificadas en la llamada a iptables-restore en lugar de todo el conjunto de reglas

Se agregó Alpha Feature Gate  —— MinimizeIPTablesRestore para controlar si se habilita esta función.

PR#108250 kube-proxy agrega la marca --iptables-localhost-nodeports para permitir a los usuarios prohibir el acceso al servicio de NodePort a través de localhost.

PR#111806 Si el usuario solicita usar ipvs, pero el sistema no está configurado correctamente, ya no volverá al modo iptables, sino que devolverá un error.

PR#113363 kube-proxy se reiniciará si detecta que los pod.Spec.PodCIDR asignados a los nodos han cambiado.

PR#112133 elimina el modo de proxy obsoleto "espacio de usuario".

Actualización de estabilidad funcional

Alfa -> Beta

Puerta característica KEP
ProxyTerminatingEndpoints Puntos finales de terminación de proxy KEP-1669
Configuración de DNS expandida KEP-2595 Configuración de DNS ampliado

Beta -> GA

Puerta característica KEP
MixedProtocolLBService KEP-1435 Soporte de protocolos mixtos en Servicios con type=LoadBalancer
ServicioIPStaticSubrange Rangos de IP del servicio de reserva KEP-3070 para asignación de IP estática y dinámica
ServiceInternalTrafficPolicy KEP-2086 Política de tráfico interno del servicio
EndpointSliceTerminatingCondition KEP-1672 Seguimiento de terminales de terminación

06

Control y Coordinación de Recursos

KEP-3017 PodHealthyPolicy para PodDisruptionBudget PR#113375

Se agregó el campo spec.unhealthyPodEvictionPolicy al recurso PodDisruptionBudget para controlar cuándo se debe considerar el desalojo de pods en mal estado.

Actualmente hay dos valores que se pueden establecer para el campo spec.unhealthyPodEvictionPolicy: IfHealthyBudget y AlwaysAllow

spec:  minAvailable: 2  selector:    matchLabels:      app: zookeeper  unhealthyPodEvictionPolicy: IfHealthyBudget

Se agregó Alpha Feature Gate  —— PDBUnhealthyPodEvictionPolicy para controlar si habilitar esta función

KEP-3335 StatefulSet Iniciar ordinal PR#112744 

StatefulSet actualmente enumera los pods a partir de 0.

Esta función agrega un campo spec.ordinals.start a StatefulSet para controlar el número inicial de Pods. ​​​​​​​​

apiVersion: apps/v1kind: StatefulSetspec:  ordinals:    start: 1

Se agregó Alpha Feature Gate  —— StatefulSetStartOrdinal para controlar si habilitar esta función

PR#112011  Si varios HPA involucran el mismo Pod, dejará de funcionar y establecerá la Condición de acción de escala del HPA en Falso y el Motivo en AmbiguousSelector.Este PR también incluye varios HPA que apuntan a la misma implementación.

Actualización de estabilidad funcional

Alfa -> Beta

Puerta característica KEP
JobPodFailurePolicy KEP-3329 Fallos de pods recuperables y no recuperables para trabajos
PodDisruptionCondiciones KEP-3329 Fallos de pods recuperables y no recuperables para trabajos

Beta -> GA

Puerta característica KEP
Seguimiento de trabajos con finalizadores KEP-2307 Seguimiento de trabajos sin pods persistentes

07

Programación de pods

 Preparación para la programación de pods KEP-3521

PR relacionado: PR#113275,PR#113274,PR#113442

No todos los Pods en estado Pendiente están listos para programarse y algunos Pods no se pueden programar correctamente debido a la falta de los recursos necesarios, lo que también generará trabajo adicional para el programador.

Esta característica agrega el campo spec.schedulingGates en el Pod para controlar si el Pod está listo para la programación real. ​​​​​​​​

spec:  schedulingGates:  - name: <value>

La programación solo comenzará cuando se borre spec.schedulingGates:​​​​​​​​

$ kubectl get pod example-po NAME         READY   STATUS            RESTARTS   AGE example-po   0/1     SchedulingGated   0          30s

Se agregó Alpha Feature Gate  —— PodSchedulingReadiness para controlar si habilitar esta función

PR#111726 Salida de información de Pod de estado Pendiente en el Dummper de depuración de Scheduler.

Optimización y CORRECCIÓN DE ERRORES

PR#111809 Al usar Patch para actualizar el estado del Pod, además de los errores net.ConnectionRefused, ServiceUndisponible e InternalError, también se volverán a intentar

Se produce un error de servicio no disponible cuando APIServer no puede procesar una solicitud temporalmente.

E0805 20:54:21.624945 123623 scheduler.go:356] Error al actualizar pod foo: el servidor actualmente no puede manejar la solicitud (patch pods foo)

InternalError generalmente ocurre debido a una falla temporal del webhook.

E0811 23:32:30.886582 213747 scheduler.go:357] Error al actualizar pod foo: se produjo un error interno: no se pudo llamar al webhook "xyz": publicar "xyz": se excedió la fecha límite del contexto

Actualización de estabilidad funcional

Alfa -> Beta

Puerta característica KEP
NodeInclusionPolicyNodeInclusionPolicy KEP-3094 Tenga en cuenta las contaminaciones/tolerancias al calcular el sesgo de PodTopologySpread

08

Observabilidad

KEP-3466 Kubernetes Component Health SLI

Antes no había un formato estándar para exponer la información de salud de los componentes de Kubernetes. Esta función agrega una nueva ruta /metrics/slis a cada componente para exponer el indicador de nivel de servicio (ServiceLevelIndicator) en el formato Prometheus.

Cada componente necesita exponer dos métricas:

  • calibre: el estado actual de verificación de salud del componente

# HELP kubernetes_healthcheck [ALPHA] This metric records the result of a single healthcheck.# TYPE kubernetes_healthcheck gaugekubernetes_healthcheck{name="etcd",type="healthz"} 1kubernetes_healthcheck{name="etcd",type="readyz"} 1
  • contador: recuento acumulativo de estados detectados para cada verificación de estado

# HELP kubernetes_healthchecks_total [ALPHA] This metric records the results of all healthcheck.# TYPE kubernetes_healthchecks_total counterkubernetes_healthchecks_total{name="etcd",status="success",type="healthz"} 15kubernetes_healthchecks_total{name="etcd",status="success",type="readyz"} 15
  • Era APIServer: PR#112741

  • Administrador de controladores de Kube: PR#112978

  • Programador de Kube: PR#113026

  • Kubelet: PR#113030

  • Proxy de Kube: PR#113057

  • Administrador de controladores en la nube: PR#113340

Se agregó Alpha Feature Gate: ComponentSLI para controlar si se habilita esta función.

Se han agregado algunos indicadores de métricas a cada componente y se han solucionado algunos problemas de cálculo de indicadores.

09

Comandos de Kubectl

Mejoras y correcciones de subcomandos

PR#109525 El comando kubectl wait admite la configuración de campos inexistentes en -o jsonpath= , lo que puede ser útil cuando algunos campos se configuran de forma asíncrona

PR#111096 kubectl api-resources agrega la columna de categorías en la salida -o amplia y agrega el parámetro --categories para admitir el filtrado basado en categorías.

PR#113819 El evento alfa de kubectl se movió a los eventos de kubectl de comando de nivel superior.

PR#111093 corrigió kubectlrollouthistory --revision=<version>-ojson|yaml<resource> para generar json/yaml, devolver la última versión en lugar de la revisión especificada.

PR#111571 Optimice la información de solicitud del comando kubectl label --dry-run para evitar que los usuarios malinterpreten que se ha configurado la etiqueta.

antes

$ kubectl label pod foo bar=baz --dry-run=serverpod/foo labeled

después de

$ kubectl label pod foo bar=baz --dry-run=serverpod/foo labeled (server dry run)

PR#112556 Optimice el mensaje de error cuando kubectl patch usa StrategicMerigePatch para actualizar recursos personalizados.

PR#112700 Arreglar kubectl encubierto elegir versión de api incorrecta.

PR#109505 kubectl annotate ya no genera un error al establecer una anotación con el mismo valor que el valor original.

PR#110907 Al ejecutar kubectl apply, si se especifica --namespace, pero no se especifica --prune-allowlist, los recursos que no sean de espacio de nombres se eliminarán. Este pr solo agrega una advertencia. En 1.28, cuando kubectl apply especifica un espacio de nombres, El recurso pv y el espacio de nombres sin espacio de nombres ya no se eliminan.

PR#113116 kubectl apply agrega la marca --prune-allowlist, que se usa con la marca --prune para reemplazar la marca obsoleta --prune-whitelist.

Otro

PR#113146 El comando de explicación de kubectl puede usar OpenAPIv3 a través de la variable de entorno KUBECTL_EXPLAIN_OPENAPIV3.

PR#112553 Kubectl escapa de los caracteres especiales de terminal en la salida. Corrige CVE-2021-25743.

PR#112150 Optimice la visualización de kubectl de solicitudes no válidas devueltas por APIServer.

PR#112243, PR#112261 descartan varias marcas del comando kubectl run, incluso si están configuradas, se ignorarán.

Finalización de caparazón

PR#113636 La finalización del shell de kubectl admite la visualización de descripciones de comandos en bash. ​​​​​​​​

bash-5.1$ kubectl a[tab][tab]alpha          (Commands for features in alpha)annotate       (Update the annotations on a resource)api-resources  (Print the supported API resources on the server)api-versions   (Print the supported API versions on the server, in the form of "group/version")apply          (Apply a configuration to a resource by file name or stdin)argo           (The command argo is a plugin installed by the user)attach         (Attach to a running container)auth           (Inspect authorization)autoscale      (Auto-scale a deployment, replica set, stateful set, or replication controller)
bash-5.1$ kubectl --c[tab][tab]--cache-dir              (Default cache directory)--certificate-authority  (Path to a cert file for the certificate authority)--client-certificate     (Path to a client certificate file for TLS)--client-key             (Path to a client key file for TLS)--cluster                (The name of the kubeconfig cluster to use)--context                (The name of the kubeconfig context to use)

PR#105867 proporciona finalización de shell para el complemento kubectl, y el complemento puede proporcionar finalización de shell para el comando del complemento a través de kube_complete-<pluginName>.

10

Kubeadm

Correcciones y mejoras de comandos

PR#113005 kubeadm join phase control-plane-preapare certs admite la ejecución con --dry-run.

PR#112945 admite el modo de ejecución en seco para las subfases, por ejemplo, kubeadm reset phase cleanup-node --dry-run.

PR#111512 Se agregó una nueva fase al comando kubeadm init: show-join-command. Los usuarios pueden pasar kubeadm init --skip-phase=show-join-command para omitir la impresión de la información de unión. Esta fase no se puede ejecutar sola. .

PR#112172 El comando kubeadm reset agrega el indicador --cleanup-tmp-dir, que limpiará el contenido en /etc/kubernetes/tmp, el valor predeterminado es falso.

PR#112732 kubeadm agrega validación para el formato de repositorio espejo en la configuración.

PR#111783 Cuando el CertificateAuthorityData del kubeconfig leído por kubeadm está vacío, intentará cargar el certificado de CA desde el archivo CertificateAuthority externo.

PR#112508 Permitir claves de formato RSA y ECDSA en verificación previa.

PR#110972 kubeadm reset intentará limpiar los datos antiguos tanto como sea posible durante la ejecución. Los datos antiguos se borrarán cuando se ejecute cada fase de restablecimiento, y el directorio de datos etcd predeterminado se eliminará cuando se ejecute la fase remove-etcd-member .

PR#112751 Solucione el error al validar los campos relacionados con la red de ClusterConfiguration (dnsDomain, serviceSubnet, podSubnet).

Otro

PR#111277 Optimice el mensaje de error cuando kubeadm ejecuta subcomandos.

PR#112008 Dado que la contaminación de node-role.kubernetes.io/master ya no se establece en los nodos del plano de control en 1.25, kubeadm ya no establece la tolerancia de node-role.kubernetes.io/master para CoreDNSDeployment.

PR#112000 El comando kubeadm init|join|upgrade elimina la marca --container-runtime, ya que desde que se eliminó dockershim, esta marca solo tiene un valor que se puede configurar --container-runtime=remote.

11

Cliente-Ir

SharedInformerFactory de PR#112200client-go agrega un método de apagado para esperar a que finalicen todos los informantes en ejecución en Factory.

12

eliminar función

La nueva versión elimina la característica de GA Feature Gate:

  • ServiceLoadBalancerClass

  • ServiceLBNodePortControl

  • CSRDuración

  • DefaultPodTopologySpread

  • Prioridad no preventiva

  • PodAffinityNamespaceSelector

  • Preferir NominadoNodo

  • Subsobrecarga

  • UnversionedKubeletConfigMap

  • trabajo indexado

  • SuspenderTrabajo

13

Degradación funcional

Beta -> Alfa

LocalStorageCapacityIsolationFSQuotaMonitoring se actualizó a Beta en v1.25, pero se revirtió a Alpha debido al problema de que ConfigMap no se sincronizaba normalmente con el sistema de archivos Pod después de la actualización.

Historial de versiones

Referencias:

[1]  Lenguaje de expresión de validación KEP-2876 CRD: 

https://github.com/kubernetes/enhancements/issues/2876

[2]  informe:

https://docs.google.com/document/d/1rMlYKOVyujboAEG2epxSYdx7eyevC7dypkD_kUlBxn4/editar

[3]  Acta de la reunión:

https://youtu.be/GKBqyV8y8j0


 autor de este artículo 

Cai Wei

Ingeniero sénior de I+D nativo de la nube de "DaoCloud"

Fundador del proyecto de código abierto Clusterpedia

Supongo que te gusta

Origin blog.csdn.net/DaoCloud_daoke/article/details/128497129
Recomendado
Clasificación