Merge pull request #6110 from zhzhuang-zju/priorityclass-init

Add Support for Component Priority Class Configuration in karmadactl init
This commit is contained in:
karmada-bot 2025-02-12 11:07:10 +08:00 committed by GitHub
commit fcd7042d25
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 102 additions and 58 deletions

View File

@ -150,6 +150,7 @@ func NewCmdInit(parentCommand string) *cobra.Command {
flags.StringVar(&opts.ExternalEtcdClientKeyPath, "external-etcd-client-key-path", "", "The path of client side private key to the external etcd cluster in pem format.")
flags.StringVar(&opts.ExternalEtcdServers, "external-etcd-servers", "", "The server urls of external etcd cluster, to be used by kube-apiserver through --etcd-servers.")
flags.StringVar(&opts.ExternalEtcdKeyPrefix, "external-etcd-key-prefix", "", "The key prefix to be configured to kube-apiserver through --etcd-prefix.")
flags.StringVar(&opts.EtcdPriorityClass, "etcd-priority-class", "system-node-critical", "The priority class name for the component etcd.")
// karmada
flags.StringVar(&opts.CRDs, "crds", kubernetes.DefaultCrdURL, "Karmada crds resource.(local file e.g. --crds /root/crds.tar.gz)")
flags.StringVar(&opts.KarmadaInitFilePath, "config", "", "Karmada init file path")
@ -157,19 +158,31 @@ func NewCmdInit(parentCommand string) *cobra.Command {
flags.Int32VarP(&opts.KarmadaAPIServerNodePort, "port", "p", 32443, "Karmada apiserver service node port")
flags.StringVarP(&opts.KarmadaDataPath, "karmada-data", "d", "/etc/karmada", "Karmada data path. kubeconfig cert and crds files")
flags.StringVarP(&opts.KarmadaPkiPath, "karmada-pki", "", "/etc/karmada/pki", "Karmada pki path. Karmada cert files")
flags.IntVarP(&opts.WaitComponentReadyTimeout, "wait-component-ready-timeout", "", cmdinitoptions.WaitComponentReadyTimeout, "Wait for karmada component ready timeout. 0 means wait forever")
// karmada-apiserver
flags.StringVarP(&opts.KarmadaAPIServerImage, "karmada-apiserver-image", "", "", "Kubernetes apiserver image")
flags.Int32VarP(&opts.KarmadaAPIServerReplicas, "karmada-apiserver-replicas", "", 1, "Karmada apiserver replica set")
flags.StringVar(&opts.KarmadaAPIServerPriorityClass, "karmada-apiserver-priority-class", "system-node-critical", "The priority class name for the component karmada-apiserver.")
// karmada-scheduler
flags.StringVarP(&opts.KarmadaSchedulerImage, "karmada-scheduler-image", "", kubernetes.DefaultKarmadaSchedulerImage, "Karmada scheduler image")
flags.Int32VarP(&opts.KarmadaSchedulerReplicas, "karmada-scheduler-replicas", "", 1, "Karmada scheduler replica set")
flags.StringVar(&opts.KarmadaSchedulerPriorityClass, "karmada-scheduler-priority-class", "system-node-critical", "The priority class name for the component karmada-scheduler.")
// karmada-kube-controller-manager
flags.StringVarP(&opts.KubeControllerManagerImage, "karmada-kube-controller-manager-image", "", "", "Kubernetes controller manager image")
flags.Int32VarP(&opts.KubeControllerManagerReplicas, "karmada-kube-controller-manager-replicas", "", 1, "Karmada kube controller manager replica set")
flags.StringVar(&opts.KubeControllerManagerPriorityClass, "karmada-kube-controller-manager-priority-class", "system-node-critical", "The priority class name for the component karmada-kube-controller-manager.")
// karamda-controller-manager
flags.StringVarP(&opts.KarmadaControllerManagerImage, "karmada-controller-manager-image", "", kubernetes.DefaultKarmadaControllerManagerImage, "Karmada controller manager image")
flags.Int32VarP(&opts.KarmadaControllerManagerReplicas, "karmada-controller-manager-replicas", "", 1, "Karmada controller manager replica set")
flags.StringVar(&opts.KarmadaControllerManagerPriorityClass, "karmada-controller-manager-priority-class", "system-node-critical", "The priority class name for the component karmada-controller-manager.")
// karmada-webhook
flags.StringVarP(&opts.KarmadaWebhookImage, "karmada-webhook-image", "", kubernetes.DefaultKarmadaWebhookImage, "Karmada webhook image")
flags.Int32VarP(&opts.KarmadaWebhookReplicas, "karmada-webhook-replicas", "", 1, "Karmada webhook replica set")
flags.StringVar(&opts.KarmadaWebhookPriorityClass, "karmada-webhook-priority-class", "system-node-critical", "The priority class name for the component karmada-webhook.")
// karmada-aggregated-apiserver
flags.StringVarP(&opts.KarmadaAggregatedAPIServerImage, "karmada-aggregated-apiserver-image", "", kubernetes.DefaultKarmadaAggregatedAPIServerImage, "Karmada aggregated apiserver image")
flags.Int32VarP(&opts.KarmadaAggregatedAPIServerReplicas, "karmada-aggregated-apiserver-replicas", "", 1, "Karmada aggregated apiserver replica set")
flags.IntVarP(&opts.WaitComponentReadyTimeout, "wait-component-ready-timeout", "", cmdinitoptions.WaitComponentReadyTimeout, "Wait for karmada component ready timeout. 0 means wait forever")
flags.StringVar(&opts.KarmadaAggregatedAPIServerPriorityClass, "karmada-aggregated-apiserver-priority-class", "system-node-critical", "The priority class name for the component karmada-aggregated-apiserver.")
return cmd
}

View File

@ -138,58 +138,82 @@ func init() {
// CommandInitOption holds all flags options for init.
type CommandInitOption struct {
ImageRegistry string
ImagePullPolicy string
KubeImageRegistry string
KubeImageMirrorCountry string
KubeImageTag string
EtcdImage string
EtcdReplicas int32
EtcdInitImage string
EtcdStorageMode string
EtcdHostDataPath string
EtcdNodeSelectorLabels string
EtcdNodeSelectorLabelsMap map[string]string
EtcdPersistentVolumeSize string
ExternalEtcdCACertPath string
ExternalEtcdClientCertPath string
ExternalEtcdClientKeyPath string
ExternalEtcdServers string
ExternalEtcdKeyPrefix string
KarmadaAPIServerImage string
KarmadaAPIServerReplicas int32
KarmadaAPIServerAdvertiseAddress string
KarmadaAPIServerNodePort int32
KarmadaSchedulerImage string
KarmadaSchedulerReplicas int32
ImageRegistry string
ImagePullPolicy string
KubeImageRegistry string
KubeImageMirrorCountry string
KubeImageTag string
// internal etcd
EtcdImage string
EtcdReplicas int32
EtcdInitImage string
EtcdStorageMode string
EtcdHostDataPath string
EtcdNodeSelectorLabels string
EtcdNodeSelectorLabelsMap map[string]string
EtcdPersistentVolumeSize string
EtcdPriorityClass string
// external etcd
ExternalEtcdCACertPath string
ExternalEtcdClientCertPath string
ExternalEtcdClientKeyPath string
ExternalEtcdServers string
ExternalEtcdKeyPrefix string
// karmada-apiserver
KarmadaAPIServerImage string
KarmadaAPIServerReplicas int32
KarmadaAPIServerAdvertiseAddress string
KarmadaAPIServerNodePort int32
KarmadaAPIServerIP []net.IP
KarmadaAPIServerPriorityClass string
// karmada-scheduler
KarmadaSchedulerImage string
KarmadaSchedulerReplicas int32
KarmadaSchedulerPriorityClass string
// kube-controller-manager
KubeControllerManagerImage string
KubeControllerManagerReplicas int32
KarmadaControllerManagerImage string
KarmadaControllerManagerReplicas int32
KarmadaWebhookImage string
KarmadaWebhookReplicas int32
KarmadaAggregatedAPIServerImage string
KarmadaAggregatedAPIServerReplicas int32
Namespace string
KubeConfig string
Context string
StorageClassesName string
KarmadaDataPath string
KarmadaPkiPath string
CRDs string
ExternalIP string
ExternalDNS string
PullSecrets []string
CertValidity time.Duration
KubeClientSet kubernetes.Interface
CertAndKeyFileData map[string][]byte
RestConfig *rest.Config
KarmadaAPIServerIP []net.IP
HostClusterDomain string
WaitComponentReadyTimeout int
CaCertFile string
CaKeyFile string
KarmadaInitFilePath string
KubeControllerManagerPriorityClass string
// karmada-controller-manager
KarmadaControllerManagerImage string
KarmadaControllerManagerReplicas int32
KarmadaControllerManagerPriorityClass string
KarmadaWebhookImage string
KarmadaWebhookReplicas int32
KarmadaWebhookPriorityClass string
// karamda-aggregated-apiserver
KarmadaAggregatedAPIServerImage string
KarmadaAggregatedAPIServerReplicas int32
KarmadaAggregatedAPIServerPriorityClass string
Namespace string
KubeConfig string
Context string
StorageClassesName string
KarmadaDataPath string
KarmadaPkiPath string
CRDs string
ExternalIP string
ExternalDNS string
PullSecrets []string
CertValidity time.Duration
KubeClientSet kubernetes.Interface
CertAndKeyFileData map[string][]byte
RestConfig *rest.Config
HostClusterDomain string
WaitComponentReadyTimeout int
CaCertFile string
CaKeyFile string
KarmadaInitFilePath string
}
func (i *CommandInitOption) validateLocalEtcd(parentCommand string) error {

View File

@ -164,7 +164,8 @@ func (i *CommandInitOption) makeKarmadaAPIServerDeployment() *appsv1.Deployment
}
podSpec := corev1.PodSpec{
ImagePullSecrets: i.getImagePullSecrets(),
ImagePullSecrets: i.getImagePullSecrets(),
PriorityClassName: i.KarmadaAPIServerPriorityClass,
Affinity: &corev1.Affinity{
PodAntiAffinity: &corev1.PodAntiAffinity{
RequiredDuringSchedulingIgnoredDuringExecution: []corev1.PodAffinityTerm{
@ -278,7 +279,8 @@ func (i *CommandInitOption) makeKarmadaKubeControllerManagerDeployment() *appsv1
}
podSpec := corev1.PodSpec{
ImagePullSecrets: i.getImagePullSecrets(),
ImagePullSecrets: i.getImagePullSecrets(),
PriorityClassName: i.KubeControllerManagerPriorityClass,
Affinity: &corev1.Affinity{
PodAntiAffinity: &corev1.PodAntiAffinity{
RequiredDuringSchedulingIgnoredDuringExecution: []corev1.PodAffinityTerm{
@ -423,7 +425,8 @@ func (i *CommandInitOption) makeKarmadaSchedulerDeployment() *appsv1.Deployment
}
podSpec := corev1.PodSpec{
ImagePullSecrets: i.getImagePullSecrets(),
ImagePullSecrets: i.getImagePullSecrets(),
PriorityClassName: i.KarmadaSchedulerPriorityClass,
Affinity: &corev1.Affinity{
PodAntiAffinity: &corev1.PodAntiAffinity{
RequiredDuringSchedulingIgnoredDuringExecution: []corev1.PodAffinityTerm{
@ -561,7 +564,8 @@ func (i *CommandInitOption) makeKarmadaControllerManagerDeployment() *appsv1.Dep
}
podSpec := corev1.PodSpec{
ImagePullSecrets: i.getImagePullSecrets(),
ImagePullSecrets: i.getImagePullSecrets(),
PriorityClassName: i.KarmadaControllerManagerPriorityClass,
Affinity: &corev1.Affinity{
PodAntiAffinity: &corev1.PodAntiAffinity{
RequiredDuringSchedulingIgnoredDuringExecution: []corev1.PodAffinityTerm{
@ -683,7 +687,8 @@ func (i *CommandInitOption) makeKarmadaWebhookDeployment() *appsv1.Deployment {
}
podSpec := corev1.PodSpec{
ImagePullSecrets: i.getImagePullSecrets(),
ImagePullSecrets: i.getImagePullSecrets(),
PriorityClassName: i.KarmadaWebhookPriorityClass,
Affinity: &corev1.Affinity{
PodAntiAffinity: &corev1.PodAntiAffinity{
RequiredDuringSchedulingIgnoredDuringExecution: []corev1.PodAffinityTerm{
@ -858,7 +863,8 @@ func (i *CommandInitOption) makeKarmadaAggregatedAPIServerDeployment() *appsv1.D
command = append(command, fmt.Sprintf("--etcd-prefix=%s", i.ExternalEtcdKeyPrefix))
}
podSpec := corev1.PodSpec{
ImagePullSecrets: i.getImagePullSecrets(),
ImagePullSecrets: i.getImagePullSecrets(),
PriorityClassName: i.KarmadaAggregatedAPIServerPriorityClass,
Affinity: &corev1.Affinity{
PodAntiAffinity: &corev1.PodAntiAffinity{
RequiredDuringSchedulingIgnoredDuringExecution: []corev1.PodAffinityTerm{

View File

@ -232,7 +232,8 @@ func (i *CommandInitOption) makeETCDStatefulSet() *appsv1.StatefulSet {
// etcd Container
podSpec := corev1.PodSpec{
ImagePullSecrets: i.getImagePullSecrets(),
ImagePullSecrets: i.getImagePullSecrets(),
PriorityClassName: i.EtcdPriorityClass,
Affinity: &corev1.Affinity{
PodAntiAffinity: &corev1.PodAntiAffinity{
PreferredDuringSchedulingIgnoredDuringExecution: []corev1.WeightedPodAffinityTerm{