這篇文章跟大家分析一下“如何進(jìn)行external-provisioner組件的啟動(dòng)參數(shù)進(jìn)行分析”。內(nèi)容詳細(xì)易懂,對(duì)“如何進(jìn)行external-provisioner組件的啟動(dòng)參數(shù)進(jìn)行分析”感興趣的朋友可以跟著小編的思路慢慢深入來(lái)閱讀一下,希望閱讀后能夠?qū)Υ蠹矣兴鶐椭O旅娓【幰黄鹕钊雽W(xué)習(xí)“如何進(jìn)行external-provisioner組件的啟動(dòng)參數(shù)進(jìn)行分析”的知識(shí)吧。
創(chuàng)新互聯(lián)公司主營(yíng)復(fù)興網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,App定制開(kāi)發(fā),復(fù)興h5微信小程序定制開(kāi)發(fā)搭建,復(fù)興網(wǎng)站營(yíng)銷(xiāo)推廣歡迎復(fù)興等地區(qū)企業(yè)咨詢
具體參考https://github.com/kubernetes-csi/external-provisioner#command-line-options
var ( master = flag.String("master", "", "Master URL to build a client config from. Either this or kubeconfig needs to be set if the provisioner is being run out of cluster.") kubeconfig = flag.String("kubeconfig", "", "Absolute path to the kubeconfig file. Either this or master needs to be set if the provisioner is being run out of cluster.") csiEndpoint = flag.String("csi-address", "/run/csi/socket", "The gRPC endpoint for Target CSI Volume.") _ = deprecatedflags.Add("connection-timeout") volumeNamePrefix = flag.String("volume-name-prefix", "pvc", "Prefix to apply to the name of a created volume.") volumeNameUUIDLength = flag.Int("volume-name-uuid-length", -1, "Truncates generated UUID of a created volume to this length. Defaults behavior is to NOT truncate.") showVersion = flag.Bool("version", false, "Show version.") retryIntervalStart = flag.Duration("retry-interval-start", time.Second, "Initial retry interval of failed provisioning or deletion. It doubles with each failure, up to retry-interval-max.") retryIntervalMax = flag.Duration("retry-interval-max", 5*time.Minute, "Maximum retry interval of failed provisioning or deletion.") workerThreads = flag.Uint("worker-threads", 100, "Number of provisioner worker threads, in other words nr. of simultaneous CSI calls.") finalizerThreads = flag.Uint("cloning-protection-threads", 1, "Number of simultaniously running threads, handling cloning finalizer removal") operationTimeout = flag.Duration("timeout", 10*time.Second, "Timeout for waiting for creation or deletion of a volume") _ = deprecatedflags.Add("provisioner") enableLeaderElection = flag.Bool("enable-leader-election", false, "Enables leader election. If leader election is enabled, additional RBAC rules are required. Please refer to the Kubernetes CSI documentation for instructions on setting up these RBAC rules.") leaderElectionType = flag.String("leader-election-type", "endpoints", "the type of leader election, options are 'endpoints' (default) or 'leases' (strongly recommended). The 'endpoints' option is deprecated in favor of 'leases'.") leaderElectionNamespace = flag.String("leader-election-namespace", "", "Namespace where the leader election resource lives. Defaults to the pod namespace if not set.") strictTopology = flag.Bool("strict-topology", false, "Passes only selected node topology to CreateVolume Request, unlike default behavior of passing aggregated cluster topologies that match with topology keys of the selected node.") extraCreateMetadata = flag.Bool("extra-create-metadata", false, "If set, add pv/pvc metadata to plugin create requests as parameters.") metricsAddress = flag.String("metrics-address", "", "The TCP network address where the prometheus metrics endpoint will listen (example: `:8080`). The default is empty string, which means metrics endpoint is disabled.") metricsPath = flag.String("metrics-path", "/metrics", "The HTTP path where prometheus metrics will be exposed. Default is `/metrics`.") featureGates map[string]bool provisionController *controller.ProvisionController version = "unknown" ) func main() { var config *rest.Config var err error flag.Var(utilflag.NewMapStringBool(&featureGates), "feature-gates", "A set of key=value pairs that describe feature gates for alpha/experimental features. "+ "Options are:\n"+strings.Join(utilfeature.DefaultFeatureGate.KnownFeatures(), "\n")) klog.InitFlags(nil) flag.CommandLine.AddGoFlagSet(goflag.CommandLine) flag.Set("logtostderr", "true") flag.Parse() ......
... args: - "--csi-address=$(ADDRESS)" - "--v=5" - "--timeout=150s" - "--retry-interval-start=500ms" - "--enable-leader-election=true" - "--leader-election-type=leases" - "--feature-gates=Topology=true" env: - name: ADDRESS value: unix:///csi/csi-provisioner.sock imagePullPolicy: "Always" volumeMounts: - name: socket-dir mountPath: /csi volumes: - name: socket-dir emptyDir: { medium: "Memory" } ...
下面是部分參數(shù)解析。其他參數(shù)請(qǐng)參考:https://github.com/kubernetes-csi/external-provisioner#command-line-options
ceph-csi組件暴露的grpc服務(wù)socket地址,external-provisioner組件將與該socket地址通信,發(fā)出創(chuàng)建、刪除存儲(chǔ)的請(qǐng)求。默認(rèn)值為/run/csi/socket
。
創(chuàng)建存儲(chǔ)與刪除存儲(chǔ)請(qǐng)求的超時(shí)時(shí)間,默認(rèn)10秒。
是否開(kāi)啟leader選舉,配置值為true
時(shí)開(kāi)啟,默認(rèn)值為false
。
leader選舉時(shí)使用的鎖類型,包括兩種,默認(rèn)的endpoint
與官方推薦的lease
。
leader選舉所使用的鎖對(duì)象存儲(chǔ)在哪個(gè)命令空間,默認(rèn)存儲(chǔ)在external-provisioner pod所在的命名空間。
設(shè)置為true
后,創(chuàng)建存儲(chǔ)時(shí),將額外增加請(qǐng)求參數(shù):pvc的名稱、命名空間、pv的名稱,默認(rèn)值為false
。
同時(shí)執(zhí)行CreateVolume/DeleteVolume操作的worker數(shù)量,默認(rèn)值為100。
創(chuàng)建、刪除存儲(chǔ)失敗后的初始重試時(shí)間間隔,默認(rèn)值為1秒。每一次失敗,重試時(shí)間間隔會(huì)加倍,直到達(dá)到--retry-interval-max
配置的上限值。
創(chuàng)建、刪除存儲(chǔ)失敗后的最大重試時(shí)間間隔,默認(rèn)值為5分鐘。
創(chuàng)建pv時(shí)給pv名稱加的前綴,默認(rèn)值為pvc
。
特性配置。
配置示例:--feature-gates=Topology=true
,存儲(chǔ)拓?fù)湎嚓P(guān),具體使用請(qǐng)參考:
https://kubernetes.io/zh/blog/2018/10/11/kubernetes-%E4%B8%AD%E7%9A%84%E6%8B%93%E6%89%91%E6%84%9F%E7%9F%A5%E6%95%B0%E6%8D%AE%E5%8D%B7%E4%BE%9B%E5%BA%94/
https://kubernetes-csi.github.io/docs/topology.html
用于kube-client與kube-apiserver通信時(shí)客戶端kube-client的限流。
限流實(shí)現(xiàn)上是令牌桶算法,kube-api-qps可以看作是每秒產(chǎn)生令牌的速度,而kube-api-burst可以看作是令牌桶的大小,kube-client發(fā)送給kube-apiserver的請(qǐng)求需要拿到令牌桶里的令牌后才能發(fā)送。
其中kube-api-qps
默認(rèn)值為5,kube-api-burst
默認(rèn)值為10。
關(guān)于如何進(jìn)行external-provisioner組件的啟動(dòng)參數(shù)進(jìn)行分析就分享到這里啦,希望上述內(nèi)容能夠讓大家有所提升。如果想要學(xué)習(xí)更多知識(shí),請(qǐng)大家多多留意小編的更新。謝謝大家關(guān)注一下創(chuàng)新互聯(lián)網(wǎng)站!