class RequireK8sVersionAtLeastCondition implements ExecutionCondition {

  public static final String NON_NUMERIC_CHARACTERS = "[^\\d.]";

  @Override
  public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context) {<FILL_FUNCTION_BODY>}

  boolean kubernetesVersionAtLeast(int majorVersion, int minorVersion) {
    try (KubernetesClient client = new KubernetesClientBuilder().build()) {
      VersionInfo versionInfo = client.getKubernetesVersion();
      String clusterMajorVersion = versionInfo.getMajor().replaceAll(NON_NUMERIC_CHARACTERS, "");
      String clusterMinorVersion = versionInfo.getMinor().replaceAll(NON_NUMERIC_CHARACTERS, "");

      if (majorVersion < Integer.parseInt(clusterMajorVersion)) {
        return true;
      }

      return Integer.parseInt(clusterMajorVersion) >= majorVersion &&
          Integer.parseInt(clusterMinorVersion) >= minorVersion;
    }
  }
}

    final RequireK8sVersionAtLeast requireK8s = findAnnotation(context.getElement(), RequireK8sVersionAtLeast.class)
        .orElse(null);
    if (requireK8s != null) {
      final int majorVersion = requireK8s.majorVersion();
      final int minorVersion = requireK8s.minorVersion();
      if (kubernetesVersionAtLeast(majorVersion, minorVersion)) {
        return ConditionEvaluationResult
            .enabled(String.format("Kubernetes version is at least %s.%s", majorVersion, minorVersion));
      } else {
        return ConditionEvaluationResult
            .disabled(String.format("Kubernetes version is below %s.%s", majorVersion, minorVersion));
      }
    }
    return ConditionEvaluationResult.enabled("RequireK8sVersionAtLeastCondition is not applicable");
  
<no_super_class>