共計 5423 個字符,預計需要花費 14 分鐘才能閱讀完成。
這篇文章跟大家分析一下“如何進行 external-provisioner 組件的啟動參數進行分析”。內容詳細易懂,對“如何進行 external-provisioner 組件的啟動參數進行分析”感興趣的朋友可以跟著丸趣 TV 小編的思路慢慢深入來閱讀一下,希望閱讀后能夠對大家有所幫助。下面跟著丸趣 TV 小編一起深入學習“如何進行 external-provisioner 組件的啟動參數進行分析”的知識吧。
external-provisioner 組件啟動參數列表
具體參考 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()
......
external-provisioner 容器部署的啟動參數配置
...
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
}
...
下面是部分參數解析。其他參數請參考:https://github.com/kubernetes-csi/external-provisioner#command-line-options
csi-address
ceph-csi 組件暴露的 grpc 服務 socket 地址,external-provisioner 組件將與該 socket 地址通信,發出創建、刪除存儲的請求。默認值為 /run/csi/socket。
timeout
創建存儲與刪除存儲請求的超時時間,默認 10 秒。
enable-leader-election
是否開啟 leader 選舉,配置值為 true 時開啟,默認值為 false。
leader-election-type
leader 選舉時使用的鎖類型,包括兩種,默認的 endpoint 與官方推薦的 lease。
leader-election-namespace
leader 選舉所使用的鎖對象存儲在哪個命令空間,默認存儲在 external-provisioner pod 所在的命名空間。
extra-create-metadata
設置為 true 后,創建存儲時,將額外增加請求參數:pvc 的名稱、命名空間、pv 的名稱,默認值為 false。
worker-threads
同時執行 CreateVolume/DeleteVolume 操作的 worker 數量,默認值為 100。
retry-interval-start
創建、刪除存儲失敗后的初始重試時間間隔,默認值為 1 秒。每一次失敗,重試時間間隔會加倍,直到達到 –retry-interval-max 配置的上限值。
retry-interval-max
創建、刪除存儲失敗后的最大重試時間間隔,默認值為 5 分鐘。
volume-name-prefix
創建 pv 時給 pv 名稱加的前綴,默認值為 pvc。
feature-gates
特性配置。
配置示例:–feature-gates=Topology=true,存儲拓撲相關,具體使用請參考:
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-api-qps 與 kube-api-burst
用于 kube-client 與 kube-apiserver 通信時客戶端 kube-client 的限流。
限流實現上是令牌桶算法,kube-api-qps 可以看作是每秒產生令牌的速度,而 kube-api-burst 可以看作是令牌桶的大小,kube-client 發送給 kube-apiserver 的請求需要拿到令牌桶里的令牌后才能發送。
其中 kube-api-qps 默認值為 5,kube-api-burst 默認值為 10。
關于如何進行 external-provisioner 組件的啟動參數進行分析就分享到這里啦,希望上述內容能夠讓大家有所提升。如果想要學習更多知識,請大家多多留意丸趣 TV 小編的更新。謝謝大家關注一下丸趣 TV 網站!