Skip to content

Commit fcd7042

Browse files
authored
Merge pull request #6110 from zhzhuang-zju/priorityclass-init
Add Support for Component Priority Class Configuration in karmadactl init
2 parents 091d1df + 8949f33 commit fcd7042

File tree

4 files changed

+102
-58
lines changed

4 files changed

+102
-58
lines changed

pkg/karmadactl/cmdinit/cmdinit.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,26 +150,39 @@ func NewCmdInit(parentCommand string) *cobra.Command {
150150
flags.StringVar(&opts.ExternalEtcdClientKeyPath, "external-etcd-client-key-path", "", "The path of client side private key to the external etcd cluster in pem format.")
151151
flags.StringVar(&opts.ExternalEtcdServers, "external-etcd-servers", "", "The server urls of external etcd cluster, to be used by kube-apiserver through --etcd-servers.")
152152
flags.StringVar(&opts.ExternalEtcdKeyPrefix, "external-etcd-key-prefix", "", "The key prefix to be configured to kube-apiserver through --etcd-prefix.")
153+
flags.StringVar(&opts.EtcdPriorityClass, "etcd-priority-class", "system-node-critical", "The priority class name for the component etcd.")
153154
// karmada
154155
flags.StringVar(&opts.CRDs, "crds", kubernetes.DefaultCrdURL, "Karmada crds resource.(local file e.g. --crds /root/crds.tar.gz)")
155156
flags.StringVar(&opts.KarmadaInitFilePath, "config", "", "Karmada init file path")
156157
flags.StringVarP(&opts.KarmadaAPIServerAdvertiseAddress, "karmada-apiserver-advertise-address", "", "", "The IP address the Karmada API Server will advertise it's listening on. If not set, the address on the master node will be used.")
157158
flags.Int32VarP(&opts.KarmadaAPIServerNodePort, "port", "p", 32443, "Karmada apiserver service node port")
158159
flags.StringVarP(&opts.KarmadaDataPath, "karmada-data", "d", "/etc/karmada", "Karmada data path. kubeconfig cert and crds files")
159160
flags.StringVarP(&opts.KarmadaPkiPath, "karmada-pki", "", "/etc/karmada/pki", "Karmada pki path. Karmada cert files")
161+
flags.IntVarP(&opts.WaitComponentReadyTimeout, "wait-component-ready-timeout", "", cmdinitoptions.WaitComponentReadyTimeout, "Wait for karmada component ready timeout. 0 means wait forever")
162+
// karmada-apiserver
160163
flags.StringVarP(&opts.KarmadaAPIServerImage, "karmada-apiserver-image", "", "", "Kubernetes apiserver image")
161164
flags.Int32VarP(&opts.KarmadaAPIServerReplicas, "karmada-apiserver-replicas", "", 1, "Karmada apiserver replica set")
165+
flags.StringVar(&opts.KarmadaAPIServerPriorityClass, "karmada-apiserver-priority-class", "system-node-critical", "The priority class name for the component karmada-apiserver.")
166+
// karmada-scheduler
162167
flags.StringVarP(&opts.KarmadaSchedulerImage, "karmada-scheduler-image", "", kubernetes.DefaultKarmadaSchedulerImage, "Karmada scheduler image")
163168
flags.Int32VarP(&opts.KarmadaSchedulerReplicas, "karmada-scheduler-replicas", "", 1, "Karmada scheduler replica set")
169+
flags.StringVar(&opts.KarmadaSchedulerPriorityClass, "karmada-scheduler-priority-class", "system-node-critical", "The priority class name for the component karmada-scheduler.")
170+
// karmada-kube-controller-manager
164171
flags.StringVarP(&opts.KubeControllerManagerImage, "karmada-kube-controller-manager-image", "", "", "Kubernetes controller manager image")
165172
flags.Int32VarP(&opts.KubeControllerManagerReplicas, "karmada-kube-controller-manager-replicas", "", 1, "Karmada kube controller manager replica set")
173+
flags.StringVar(&opts.KubeControllerManagerPriorityClass, "karmada-kube-controller-manager-priority-class", "system-node-critical", "The priority class name for the component karmada-kube-controller-manager.")
174+
// karamda-controller-manager
166175
flags.StringVarP(&opts.KarmadaControllerManagerImage, "karmada-controller-manager-image", "", kubernetes.DefaultKarmadaControllerManagerImage, "Karmada controller manager image")
167176
flags.Int32VarP(&opts.KarmadaControllerManagerReplicas, "karmada-controller-manager-replicas", "", 1, "Karmada controller manager replica set")
177+
flags.StringVar(&opts.KarmadaControllerManagerPriorityClass, "karmada-controller-manager-priority-class", "system-node-critical", "The priority class name for the component karmada-controller-manager.")
178+
// karmada-webhook
168179
flags.StringVarP(&opts.KarmadaWebhookImage, "karmada-webhook-image", "", kubernetes.DefaultKarmadaWebhookImage, "Karmada webhook image")
169180
flags.Int32VarP(&opts.KarmadaWebhookReplicas, "karmada-webhook-replicas", "", 1, "Karmada webhook replica set")
181+
flags.StringVar(&opts.KarmadaWebhookPriorityClass, "karmada-webhook-priority-class", "system-node-critical", "The priority class name for the component karmada-webhook.")
182+
// karmada-aggregated-apiserver
170183
flags.StringVarP(&opts.KarmadaAggregatedAPIServerImage, "karmada-aggregated-apiserver-image", "", kubernetes.DefaultKarmadaAggregatedAPIServerImage, "Karmada aggregated apiserver image")
171184
flags.Int32VarP(&opts.KarmadaAggregatedAPIServerReplicas, "karmada-aggregated-apiserver-replicas", "", 1, "Karmada aggregated apiserver replica set")
172-
flags.IntVarP(&opts.WaitComponentReadyTimeout, "wait-component-ready-timeout", "", cmdinitoptions.WaitComponentReadyTimeout, "Wait for karmada component ready timeout. 0 means wait forever")
185+
flags.StringVar(&opts.KarmadaAggregatedAPIServerPriorityClass, "karmada-aggregated-apiserver-priority-class", "system-node-critical", "The priority class name for the component karmada-aggregated-apiserver.")
173186

174187
return cmd
175188
}

pkg/karmadactl/cmdinit/kubernetes/deploy.go

Lines changed: 74 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -138,58 +138,82 @@ func init() {
138138

139139
// CommandInitOption holds all flags options for init.
140140
type CommandInitOption struct {
141-
ImageRegistry string
142-
ImagePullPolicy string
143-
KubeImageRegistry string
144-
KubeImageMirrorCountry string
145-
KubeImageTag string
146-
EtcdImage string
147-
EtcdReplicas int32
148-
EtcdInitImage string
149-
EtcdStorageMode string
150-
EtcdHostDataPath string
151-
EtcdNodeSelectorLabels string
152-
EtcdNodeSelectorLabelsMap map[string]string
153-
EtcdPersistentVolumeSize string
154-
ExternalEtcdCACertPath string
155-
ExternalEtcdClientCertPath string
156-
ExternalEtcdClientKeyPath string
157-
ExternalEtcdServers string
158-
ExternalEtcdKeyPrefix string
159-
KarmadaAPIServerImage string
160-
KarmadaAPIServerReplicas int32
161-
KarmadaAPIServerAdvertiseAddress string
162-
KarmadaAPIServerNodePort int32
163-
KarmadaSchedulerImage string
164-
KarmadaSchedulerReplicas int32
141+
ImageRegistry string
142+
ImagePullPolicy string
143+
KubeImageRegistry string
144+
KubeImageMirrorCountry string
145+
KubeImageTag string
146+
147+
// internal etcd
148+
EtcdImage string
149+
EtcdReplicas int32
150+
EtcdInitImage string
151+
EtcdStorageMode string
152+
EtcdHostDataPath string
153+
EtcdNodeSelectorLabels string
154+
EtcdNodeSelectorLabelsMap map[string]string
155+
EtcdPersistentVolumeSize string
156+
EtcdPriorityClass string
157+
158+
// external etcd
159+
ExternalEtcdCACertPath string
160+
ExternalEtcdClientCertPath string
161+
ExternalEtcdClientKeyPath string
162+
ExternalEtcdServers string
163+
ExternalEtcdKeyPrefix string
164+
165+
// karmada-apiserver
166+
KarmadaAPIServerImage string
167+
KarmadaAPIServerReplicas int32
168+
KarmadaAPIServerAdvertiseAddress string
169+
KarmadaAPIServerNodePort int32
170+
KarmadaAPIServerIP []net.IP
171+
KarmadaAPIServerPriorityClass string
172+
173+
// karmada-scheduler
174+
KarmadaSchedulerImage string
175+
KarmadaSchedulerReplicas int32
176+
KarmadaSchedulerPriorityClass string
177+
178+
// kube-controller-manager
165179
KubeControllerManagerImage string
166180
KubeControllerManagerReplicas int32
167-
KarmadaControllerManagerImage string
168-
KarmadaControllerManagerReplicas int32
169-
KarmadaWebhookImage string
170-
KarmadaWebhookReplicas int32
171-
KarmadaAggregatedAPIServerImage string
172-
KarmadaAggregatedAPIServerReplicas int32
173-
Namespace string
174-
KubeConfig string
175-
Context string
176-
StorageClassesName string
177-
KarmadaDataPath string
178-
KarmadaPkiPath string
179-
CRDs string
180-
ExternalIP string
181-
ExternalDNS string
182-
PullSecrets []string
183-
CertValidity time.Duration
184-
KubeClientSet kubernetes.Interface
185-
CertAndKeyFileData map[string][]byte
186-
RestConfig *rest.Config
187-
KarmadaAPIServerIP []net.IP
188-
HostClusterDomain string
189-
WaitComponentReadyTimeout int
190-
CaCertFile string
191-
CaKeyFile string
192-
KarmadaInitFilePath string
181+
KubeControllerManagerPriorityClass string
182+
183+
// karmada-controller-manager
184+
KarmadaControllerManagerImage string
185+
KarmadaControllerManagerReplicas int32
186+
KarmadaControllerManagerPriorityClass string
187+
188+
KarmadaWebhookImage string
189+
KarmadaWebhookReplicas int32
190+
KarmadaWebhookPriorityClass string
191+
192+
// karamda-aggregated-apiserver
193+
KarmadaAggregatedAPIServerImage string
194+
KarmadaAggregatedAPIServerReplicas int32
195+
KarmadaAggregatedAPIServerPriorityClass string
196+
197+
Namespace string
198+
KubeConfig string
199+
Context string
200+
StorageClassesName string
201+
KarmadaDataPath string
202+
KarmadaPkiPath string
203+
CRDs string
204+
ExternalIP string
205+
ExternalDNS string
206+
PullSecrets []string
207+
CertValidity time.Duration
208+
KubeClientSet kubernetes.Interface
209+
CertAndKeyFileData map[string][]byte
210+
RestConfig *rest.Config
211+
212+
HostClusterDomain string
213+
WaitComponentReadyTimeout int
214+
CaCertFile string
215+
CaKeyFile string
216+
KarmadaInitFilePath string
193217
}
194218

195219
func (i *CommandInitOption) validateLocalEtcd(parentCommand string) error {

pkg/karmadactl/cmdinit/kubernetes/deployments.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,8 @@ func (i *CommandInitOption) makeKarmadaAPIServerDeployment() *appsv1.Deployment
164164
}
165165

166166
podSpec := corev1.PodSpec{
167-
ImagePullSecrets: i.getImagePullSecrets(),
167+
ImagePullSecrets: i.getImagePullSecrets(),
168+
PriorityClassName: i.KarmadaAPIServerPriorityClass,
168169
Affinity: &corev1.Affinity{
169170
PodAntiAffinity: &corev1.PodAntiAffinity{
170171
RequiredDuringSchedulingIgnoredDuringExecution: []corev1.PodAffinityTerm{
@@ -278,7 +279,8 @@ func (i *CommandInitOption) makeKarmadaKubeControllerManagerDeployment() *appsv1
278279
}
279280

280281
podSpec := corev1.PodSpec{
281-
ImagePullSecrets: i.getImagePullSecrets(),
282+
ImagePullSecrets: i.getImagePullSecrets(),
283+
PriorityClassName: i.KubeControllerManagerPriorityClass,
282284
Affinity: &corev1.Affinity{
283285
PodAntiAffinity: &corev1.PodAntiAffinity{
284286
RequiredDuringSchedulingIgnoredDuringExecution: []corev1.PodAffinityTerm{
@@ -423,7 +425,8 @@ func (i *CommandInitOption) makeKarmadaSchedulerDeployment() *appsv1.Deployment
423425
}
424426

425427
podSpec := corev1.PodSpec{
426-
ImagePullSecrets: i.getImagePullSecrets(),
428+
ImagePullSecrets: i.getImagePullSecrets(),
429+
PriorityClassName: i.KarmadaSchedulerPriorityClass,
427430
Affinity: &corev1.Affinity{
428431
PodAntiAffinity: &corev1.PodAntiAffinity{
429432
RequiredDuringSchedulingIgnoredDuringExecution: []corev1.PodAffinityTerm{
@@ -561,7 +564,8 @@ func (i *CommandInitOption) makeKarmadaControllerManagerDeployment() *appsv1.Dep
561564
}
562565

563566
podSpec := corev1.PodSpec{
564-
ImagePullSecrets: i.getImagePullSecrets(),
567+
ImagePullSecrets: i.getImagePullSecrets(),
568+
PriorityClassName: i.KarmadaControllerManagerPriorityClass,
565569
Affinity: &corev1.Affinity{
566570
PodAntiAffinity: &corev1.PodAntiAffinity{
567571
RequiredDuringSchedulingIgnoredDuringExecution: []corev1.PodAffinityTerm{
@@ -683,7 +687,8 @@ func (i *CommandInitOption) makeKarmadaWebhookDeployment() *appsv1.Deployment {
683687
}
684688

685689
podSpec := corev1.PodSpec{
686-
ImagePullSecrets: i.getImagePullSecrets(),
690+
ImagePullSecrets: i.getImagePullSecrets(),
691+
PriorityClassName: i.KarmadaWebhookPriorityClass,
687692
Affinity: &corev1.Affinity{
688693
PodAntiAffinity: &corev1.PodAntiAffinity{
689694
RequiredDuringSchedulingIgnoredDuringExecution: []corev1.PodAffinityTerm{
@@ -858,7 +863,8 @@ func (i *CommandInitOption) makeKarmadaAggregatedAPIServerDeployment() *appsv1.D
858863
command = append(command, fmt.Sprintf("--etcd-prefix=%s", i.ExternalEtcdKeyPrefix))
859864
}
860865
podSpec := corev1.PodSpec{
861-
ImagePullSecrets: i.getImagePullSecrets(),
866+
ImagePullSecrets: i.getImagePullSecrets(),
867+
PriorityClassName: i.KarmadaAggregatedAPIServerPriorityClass,
862868
Affinity: &corev1.Affinity{
863869
PodAntiAffinity: &corev1.PodAntiAffinity{
864870
RequiredDuringSchedulingIgnoredDuringExecution: []corev1.PodAffinityTerm{

pkg/karmadactl/cmdinit/kubernetes/statefulset.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,8 @@ func (i *CommandInitOption) makeETCDStatefulSet() *appsv1.StatefulSet {
232232

233233
// etcd Container
234234
podSpec := corev1.PodSpec{
235-
ImagePullSecrets: i.getImagePullSecrets(),
235+
ImagePullSecrets: i.getImagePullSecrets(),
236+
PriorityClassName: i.EtcdPriorityClass,
236237
Affinity: &corev1.Affinity{
237238
PodAntiAffinity: &corev1.PodAntiAffinity{
238239
PreferredDuringSchedulingIgnoredDuringExecution: []corev1.WeightedPodAffinityTerm{

0 commit comments

Comments
 (0)