// AddFlags adds flags for a specific CMServer to the specified FlagSet
func(s*CMServer)AddFlags(fs*pflag.FlagSet){
fs.IntVar(&s.Port,"port",s.Port,"The port that the controller-manager's http service runs on")
fs.IPVar(&s.Address,"address",s.Address,"The IP address to serve on (set to 0.0.0.0 for all interfaces)")
fs.StringVar(&s.CloudProvider,"cloud-provider",s.CloudProvider,"The provider for cloud services. Empty string for no provider.")
fs.StringVar(&s.CloudConfigFile,"cloud-config",s.CloudConfigFile,"The path to the cloud provider configuration file. Empty string for no configuration file.")
fs.IntVar(&s.ConcurrentEndpointSyncs,"concurrent-endpoint-syncs",s.ConcurrentEndpointSyncs,"The number of endpoint syncing operations that will be done concurrently. Larger number = faster endpoint updating, but more CPU (and network) load")
fs.IntVar(&s.ConcurrentRCSyncs,"concurrent_rc_syncs",s.ConcurrentRCSyncs,"The number of replication controllers that are allowed to sync concurrently. Larger number = more reponsive replica management, but more CPU (and network) load")
fs.IntVar(&s.ConcurrentResourceQuotaSyncs,"concurrent-resource-quota-syncs",s.ConcurrentResourceQuotaSyncs,"The number of resource quotas that are allowed to sync concurrently. Larger number = more responsive quota management, but more CPU (and network) load")
fs.IntVar(&s.ConcurrentDeploymentSyncs,"concurrent-deployment-syncs",s.ConcurrentDeploymentSyncs,"The number of deployment objects that are allowed to sync concurrently. Larger number = more reponsive deployments, but more CPU (and network) load")
fs.DurationVar(&s.ServiceSyncPeriod,"service-sync-period",s.ServiceSyncPeriod,"The period for syncing services with their external load balancers")
"The period for syncing nodes from cloudprovider. Longer periods will result in "+
"fewer calls to cloud provider, but may delay addition of new nodes to cluster.")
fs.DurationVar(&s.ResourceQuotaSyncPeriod,"resource-quota-sync-period",s.ResourceQuotaSyncPeriod,"The period for syncing quota usage status in the system")
fs.DurationVar(&s.NamespaceSyncPeriod,"namespace-sync-period",s.NamespaceSyncPeriod,"The period for syncing namespace life-cycle updates")
fs.DurationVar(&s.PVClaimBinderSyncPeriod,"pvclaimbinder-sync-period",s.PVClaimBinderSyncPeriod,"The period for syncing persistent volumes and persistent volume claims")
fs.DurationVar(&s.MinResyncPeriod,"min-resync-period",s.MinResyncPeriod,"The resync period in reflectors will be random between MinResyncPeriod and 2*MinResyncPeriod")
fs.StringVar(&s.VolumeConfigFlags.PersistentVolumeRecyclerPodTemplateFilePathNFS,"pv-recycler-pod-template-filepath-nfs",s.VolumeConfigFlags.PersistentVolumeRecyclerPodTemplateFilePathNFS,"The file path to a pod definition used as a template for NFS persistent volume recycling")
fs.IntVar(&s.VolumeConfigFlags.PersistentVolumeRecyclerMinimumTimeoutNFS,"pv-recycler-minimum-timeout-nfs",s.VolumeConfigFlags.PersistentVolumeRecyclerMinimumTimeoutNFS,"The minimum ActiveDeadlineSeconds to use for an NFS Recycler pod")
fs.IntVar(&s.VolumeConfigFlags.PersistentVolumeRecyclerIncrementTimeoutNFS,"pv-recycler-increment-timeout-nfs",s.VolumeConfigFlags.PersistentVolumeRecyclerIncrementTimeoutNFS,"the increment of time added per Gi to ActiveDeadlineSeconds for an NFS scrubber pod")
fs.StringVar(&s.VolumeConfigFlags.PersistentVolumeRecyclerPodTemplateFilePathHostPath,"pv-recycler-pod-template-filepath-hostpath",s.VolumeConfigFlags.PersistentVolumeRecyclerPodTemplateFilePathHostPath,"The file path to a pod definition used as a template for HostPath persistent volume recycling. This is for development and testing only and will not work in a multi-node cluster.")
fs.IntVar(&s.VolumeConfigFlags.PersistentVolumeRecyclerMinimumTimeoutHostPath,"pv-recycler-minimum-timeout-hostpath",s.VolumeConfigFlags.PersistentVolumeRecyclerMinimumTimeoutHostPath,"The minimum ActiveDeadlineSeconds to use for a HostPath Recycler pod. This is for development and testing only and will not work in a multi-node cluster.")
fs.IntVar(&s.VolumeConfigFlags.PersistentVolumeRecyclerIncrementTimeoutHostPath,"pv-recycler-timeout-increment-hostpath",s.VolumeConfigFlags.PersistentVolumeRecyclerIncrementTimeoutHostPath,"the increment of time added per Gi to ActiveDeadlineSeconds for a HostPath scrubber pod. This is for development and testing only and will not work in a multi-node cluster.")
fs.BoolVar(&s.VolumeConfigFlags.EnableHostPathProvisioning,"enable-hostpath-provisioner",s.VolumeConfigFlags.EnableHostPathProvisioning,"Enable HostPath PV provisioning when running without a cloud provider. This allows testing and development of provisioning features. HostPath provisioning is not supported in any way, won't work in a multi-node cluster, and should not be used for anything other than testing or development.")
fs.IntVar(&s.TerminatedPodGCThreshold,"terminated-pod-gc-threshold",s.TerminatedPodGCThreshold,"Number of terminated pods that can exist before the terminated pod garbage collector starts deleting terminated pods. If <= 0, the terminated pod garbage collector is disabled.")
fs.DurationVar(&s.HorizontalPodAutoscalerSyncPeriod,"horizontal-pod-autoscaler-sync-period",s.HorizontalPodAutoscalerSyncPeriod,"The period for syncing the number of pods in horizontal pod autoscaler.")
fs.DurationVar(&s.DeploymentControllerSyncPeriod,"deployment-controller-sync-period",s.DeploymentControllerSyncPeriod,"Period for syncing the deployments.")
fs.DurationVar(&s.PodEvictionTimeout,"pod-eviction-timeout",s.PodEvictionTimeout,"The grace period for deleting pods on failed nodes.")
fs.Float32Var(&s.DeletingPodsQps,"deleting-pods-qps",0.1,"Number of nodes per second on which pods are deleted in case of node failure.")
fs.IntVar(&s.DeletingPodsBurst,"deleting-pods-burst",10,"Number of nodes on which pods are bursty deleted in case of node failure. For more details look into RateLimiter.")
"The period for syncing NodeStatus in NodeController.")
fs.StringVar(&s.ServiceAccountKeyFile,"service-account-private-key-file",s.ServiceAccountKeyFile,"Filename containing a PEM-encoded private RSA key used to sign service account tokens.")
fs.BoolVar(&s.EnableProfiling,"profiling",true,"Enable profiling via web interface host:port/debug/pprof/")
fs.StringVar(&s.ClusterName,"cluster-name",s.ClusterName,"The instance prefix for the cluster")
fs.IPNetVar(&s.ClusterCIDR,"cluster-cidr",s.ClusterCIDR,"CIDR Range for Pods in cluster.")
fs.BoolVar(&s.AllocateNodeCIDRs,"allocate-node-cidrs",false,"Should CIDRs for Pods be allocated and set on the cloud provider.")
fs.StringVar(&s.Master,"master",s.Master,"The address of the Kubernetes API server (overrides any value in kubeconfig)")
fs.StringVar(&s.Kubeconfig,"kubeconfig",s.Kubeconfig,"Path to kubeconfig file with authorization and master location information.")
fs.StringVar(&s.RootCAFile,"root-ca-file",s.RootCAFile,"If set, this root certificate authority will be included in service account's token secret. This must be a valid PEM-encoded CA bundle.")
fs.Float32Var(&s.KubeAPIQPS,"kube-api-qps",s.KubeAPIQPS,"QPS to use while talking with kubernetes apiserver")
fs.IntVar(&s.KubeAPIBurst,"kube-api-burst",s.KubeAPIBurst,"Burst to use while talking with kubernetes apiserver")