[ 
https://issues.apache.org/jira/browse/YUNIKORN-1196?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17531921#comment-17531921
 ] 

Craig Condit edited comment on YUNIKORN-1196 at 9/12/22 9:05 PM:
-----------------------------------------------------------------

I've now successfully built against both 1.23.6 and 1.24.0. However, this is 
going to have implications for minimum supported versions, especially in plugin 
mode.

We currently officially support running on 1.20 -> 1.23, and it's likely that 
1.24 will also work (1.24 is released but no Kind images are available yet). 
1.19 is also known to be functional but not tested regularly.

The main issue of compatibility has to do with the various API server versions 
of key resources that are supported. Here is a summary of the relevant 
resources that have been updated in each version:

* 1.20 -> 1.21
** PodDisruptionBudget: v1beta1 -> v1
** CSIStorageCapacity: v1alpha1 -> v1beta1 (v1alpha1 still supported)
* 1.21 -> 1.22
** CSIStorageCapacity: v1alpha1 support dropped
* 1.22 -> 1.23
** no major changes
* 1.23 -> 1.24
** CSIStorageCapacity: v1beta1 -> v1 (v1beta1 still supported)
* 1.24 -> 1.25
** CSIStorageCapacity: REMOVED

CSIStorageCapacity is the biggest issue. The informers initialized as part of 
the default scheduler framework use the latest supported version as of the K8s 
version they are compiled against. Additionally, the framework waits for all 
informers to finish registering before starting pod scheduling. The consequence 
of this is that if we compile against 1.23, the scheduler hangs on startup with 
K8s API server < 1.21 (as v1beta1 is not available). Compiling against 1.24 is 
even worse, as that uses v1, which is only available on 1.24 and later.

Long story short: Compiling against 1.23 is going to force us to drop support 
for 1.20 and earlier. 1.20 is officially end-of-life, however it is still in 
wide use.

Compiling against 1.24 is going to drop support for 1.23 and earlier, which we 
cannot even think about doing until next year (1.23 is supported upstream 
through 28 Feb 2023).

Update (September 2022): Now that 1.25 is out and CSIStorageCapacity is no 
more, supporting 1.25 in plugin mode *requires* compiling against Kubernetes 
1.24 or later. As before, doing this will drop support for Kubernetes 1.24 or 
earlier. So, we are now in a scenario where we can support K8s 1.20-1.24, or 
1.24-1.25, but not both with the same codebase.




was (Author: ccondit):
I've now successfully built against both 1.23.6 and 1.24.0. However, this is 
going to have implications for minimum supported versions, especially in plugin 
mode.

We currently officially support running on 1.20 -> 1.23, and it's likely that 
1.24 will also work (1.24 is released but no Kind images are available yet). 
1.19 is also known to be functional but not tested regularly.

The main issue of compatibility has to do with the various API server versions 
of key resources that are supported. Here is a summary of the relevant 
resources that have been updated in each version:

* 1.20 -> 1.21
** PodDisruptionBudget: v1beta1 -> v1
** CSIStorageCapacity: v1alpha1 -> v1beta1 (v1alpha1 still supported)
* 1.21 -> 1.22
** CSIStorageCapacity: v1alpha1 support dropped
* 1.22 -> 1.23
** no major changes
* 1.23 -> 1.24
** CSIStorageCapacity: v1beta1 -> v1 (unknown if v1beta1 is still supported)

CSIStorageCapacity is the biggest issue. The informers initialized as part of 
the default scheduler framework use the latest supported version as of the K8s 
version they are compiled against. Additionally, the framework waits for all 
informers to finish registering before starting pod scheduling. The consequence 
of this is that if we compile against 1.23, the scheduler hangs on startup with 
K8s API server < 1.21 (as v1beta1 is not available). Compiling against 1.24 is 
even worse, as that uses v1, which is only available on 1.24 and later.

Long story short: Compiling against 1.23 is going to force us to drop support 
for 1.20 and earlier. 1.20 is officially end-of-life, however it is still in 
wide use.

Compiling against 1.24 is going to drop support for 1.23 and earlier, which we 
cannot even think about doing until next year (1.23 is supported upstream 
through 28 Feb 2023).




> [UMBRELLA] Upgrade K8s build dependency
> ---------------------------------------
>
>                 Key: YUNIKORN-1196
>                 URL: https://issues.apache.org/jira/browse/YUNIKORN-1196
>             Project: Apache YuniKorn
>          Issue Type: Task
>          Components: shim - kubernetes
>            Reporter: Wilfred Spiegelenburg
>            Assignee: Craig Condit
>            Priority: Major
>
> The current build for YuniKorn uses 1.20.11. Even a small change to K8s 1.21 
> causes compilation issues.
> Some issues can be solved by a simple one or two code line change.
> There is at least one that requires a major change in the predicate code to 
> accomodate fundamental changes made to the plugin framework.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to