web-dev-qa-db-ja.com

Jenkinsは、KubernetesAPIへの最大接続数を増やすように強制します

Jenkins version : 2.121.3

Jenkinsでk8sプラグインを使用しています。これは、シーケンシャルジョブとパラレルジョブをk8sクラスターにデプロイするのに役立ちます。

これがJenkinsfileのジョブが失敗する部分です

           parallel([
                    build: {
                        stage('check formatting')
                        // some code

                        stage('build')
                        // some code

                        stage('build image')
                        // some code

                        stage('Push image') 
                        // some code
                    },
                    test: {
                        stage('test') 
                        // some code

                        stage('build e2e test image')
                        // some code

                        }

                        stage('Push e2e test image') 
                        // some code
                    },
                   failFast: true])

並列ステージのあるジョブを実行しているときに、エラーが発生しました

caught Java.io.IOException: Connection was rejected, you should increase the Max connections to Kubernetes API

次に、[Jenkinsの管理]-> [システムの構成]-> [クラウド]-> [Kubernetes]に移動し、「Kubernetes APIへの最大接続数」を20と増やして、ジョブを再実行すると機能します。その後、ジョブを再実行しようとすると、同じエラーで失敗し、再度制限を増やす必要があります。したがって、Imは、次のことを行う無限ループのようなものです。

1)jenkinsevrerytimeを再起動します

2)APIサーバーリクエストの制限を増やします。

だから、なぜこれが起こっているのかわかりません。 APIサーバーによって処理されているリクエストの数を確認する方法はありますか?そして、彼らの情報源は何ですか?そして、以前の仕事からの長引く要求があるかどうかをどのように知ることができますか?

完全なエラーログ:

Failed in branch build
[Pipeline] // parallel
[Pipeline] echo
caught Java.io.IOException: Connection was rejected, you should increase the Max connections to Kubernetes API
[Pipeline] echo
org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator$1.doLaunch(ContainerExecDecorator.Java:329)
org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator$1.launch(ContainerExecDecorator.Java:237)
hudson.Launcher$ProcStarter.start(Launcher.Java:449)
org.jenkinsci.plugins.durabletask.BourneShellScript.launchWithCookie(BourneShellScript.Java:188)
org.jenkinsci.plugins.durabletask.FileMonitoringTask.launch(FileMonitoringTask.Java:99)
org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.start(DurableTaskStep.Java:278)
org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.Java:270)
org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.Java:178)
org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.Java:122)
Sun.reflect.GeneratedMethodAccessor646.invoke(Unknown Source)
Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
Java.lang.reflect.Method.invoke(Method.Java:498)
org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.Java:93)
groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.Java:325)
groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.Java:1213)
groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.Java:1022)
org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.Java:42)
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.Java:48)
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.Java:113)
org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.Java:157)
org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.Java:23)
org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.Java:155)
org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.Java:155)
org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.Java:159)
org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.Java:129)
org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.Java:129)
org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.Java:129)
org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.Java:129)
org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.Java:129)
com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.Java:17)
WorkflowScript.run(WorkflowScript:109)
___cps.transform___(Native Method)
com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.Java:57)
com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.Java:109)
com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.Java:82)
Sun.reflect.GeneratedMethodAccessor243.invoke(Unknown Source)
Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
Java.lang.reflect.Method.invoke(Method.Java:498)
com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.Java:72)
com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.Java:103)
com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.Java:82)
Sun.reflect.GeneratedMethodAccessor243.invoke(Unknown Source)
Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
Java.lang.reflect.Method.invoke(Method.Java:498)
com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.Java:72)
com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.Java:60)
com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.Java:109)
com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.Java:82)
Sun.reflect.GeneratedMethodAccessor243.invoke(Unknown Source)
Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
Java.lang.reflect.Method.invoke(Method.Java:498)
com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.Java:72)
com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.Java:21)
com.cloudbees.groovy.cps.Next.step(Next.Java:83)
com.cloudbees.groovy.cps.Continuable$1.call(Continuable.Java:174)
com.cloudbees.groovy.cps.Continuable$1.call(Continuable.Java:163)
org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.Java:122)
org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.Java:261)
com.cloudbees.groovy.cps.Continuable.run0(Continuable.Java:163)
org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$101(SandboxContinuable.Java:34)
org.jenkinsci.plugins.workflow.cps.SandboxContinuable.lambda$run0$0(SandboxContinuable.Java:59)
org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.Java:108)
org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.Java:58)
org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.Java:182)
org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.Java:332)
org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$200(CpsThreadGroup.Java:83)
org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.Java:244)
org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.Java:232)
org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.Java:64)
Java.util.concurrent.FutureTask.run(FutureTask.Java:266)
hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.Java:131)
jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.Java:28)
jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.Java:59)
Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:511)
Java.util.concurrent.FutureTask.run(FutureTask.Java:266)
Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1149)
Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:624)
Java.lang.Thread.run(Thread.Java:836)
9
user4889345

プラグインの公式バグのようです

https://issues.jenkins-ci.org/browse/JENKINS-55392

コミュニティが問題を解決するのを助けるために、この問題にコメントしてみることができます。

1
Tirex

Kubernetes APIへの最大接続数を64に設定します。設定が低すぎると、エラーが発生する場合があります。また、コンテナのクリーンアップタイムアウトを5に設定します。

0
Mike