[root@m-k8s ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
default-0j4bp 0/1 Error 0 17m
default-0nfl0 0/1 Error 0 21m
default-12j74 0/1 Error 0 10m
[생략]
영향받는 단원:
5.4, 5.5
문제 원인:
젠킨스 kubernetes-client-api 버전이 4.11.1에서 5.4.1로 올라가면서,
기존에 젠킨스 버전(2.249.3)에서 사용하는 쿠버네티스 플러그인(1.27.7)과 호환되지 않음
가능한 해결방안:
쿠버네티스 플러그인 버전을 1.30으로 올린다.
젠킨스 버전도 올려야 하고 영향도가 너무 큼
변경되는 내용을 모두 추적하고 관리할 수 있는 경우 사용 가능
하지만 책에는 이와 같이 제공하기 어려움 (❌ )
쿠버네티스 플러그인 마이너 버전(1.27.8)이 나올때까지 기다린다.
예상버전이면 현재 계획은 따로 없음.
현재 PR이 아래의 #1008에서 진행 중임
즉 언제 나올지 모름 (🔥 )
메타 데이터를 JSON 포맷과 같은 형태로 배포하여 호환성을 맞춤
해결 예정일: 7월 3일(일) 이전
현재 가장 유력한 해결책(✅ )
현재 상태 복구 및 진행 가이드:
젠킨스에서 정상적으로 동작하지 않는 작업을 삭제한다.
젠킨스 에이전트 pod를 삭제한다.
[root@m-k8s ~]# kubectl delete pod -l jenkins/jenkins-jenkins-slave=true
pod "default-057r4" deleted
pod "default-10cjb" deleted
pod "default-31sp6" deleted
pod "default-33jh2" deleted
[생략]
5.4, 5.5장을 일단 진행하지 않고 6장을 우선 진행한다. 그리고 7월 3일 이후로 5.4과 5.5장을 진행
[root@m-k8s ~]# k logs default-241qg
Warning: SECRET is defined twice in command-line arguments and the environment variable
Warning: AGENT_NAME is defined twice in command-line arguments and the environment variable
Jun 23, 2021 9:11:59 PM hudson.remoting.jnlp.Main createEngine
INFO: Setting up agent: default-241qg
Jun 23, 2021 9:12:00 PM hudson.remoting.jnlp.Main$CuiListener <init>
INFO: Jenkins agent is running in headless mode.
Jun 23, 2021 9:12:01 PM hudson.remoting.Engine startEngine
INFO: Using Remoting version: 4.3
Jun 23, 2021 9:12:01 PM org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir
INFO: Using /home/jenkins/remoting as a remoting work directory
Jun 23, 2021 9:12:01 PM org.jenkinsci.remoting.engine.WorkDirManager setupLogging
INFO: Both error and output logs will be printed to /home/jenkins/remoting
Jun 23, 2021 9:12:03 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Locating server among [http://192.168.1.13]
Jun 23, 2021 9:12:03 PM org.jenkinsci.remoting.engine.JnlpAgentEndpointResolver resolve
INFO: Remoting server accepts the following protocols: [JNLP4-connect, Ping]
Jun 23, 2021 9:12:03 PM org.jenkinsci.remoting.engine.JnlpAgentEndpointResolver resolve
INFO: Remoting TCP connection tunneling is enabled. Skipping the TCP Agent Listener Port availability check
Jun 23, 2021 9:12:03 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Agent discovery successful
Agent address: jenkins-agent
Agent port: 50000
Identity: b3:d3:63:0e:24:8f:5f:33:c0:ba:18:ca:90:f6:99:66
Jun 23, 2021 9:12:03 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Handshaking
Jun 23, 2021 9:12:03 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connecting to jenkins-agent:50000
Jun 23, 2021 9:12:03 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Trying protocol: JNLP4-connect
Jun 23, 2021 9:12:05 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Remote identity confirmed: b3:d3:63:0e:24:8f:5f:33:c0:ba:18:ca:90:f6:99:66
Jun 23, 2021 9:12:05 PM org.jenkinsci.remoting.protocol.impl.ConnectionHeadersFilterLayer onRecv
INFO: [JNLP4-connect connection to jenkins-agent/10.106.152.76:50000] Local headers refused by remote: Unknown client name: default-241qg
Jun 23, 2021 9:12:05 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Protocol JNLP4-connect encountered an unexpected exception
java.util.concurrent.ExecutionException: org.jenkinsci.remoting.protocol.impl.ConnectionRefusalException: Unknown client name: default-241qg
at org.jenkinsci.remoting.util.SettableFuture.get(SettableFuture.java:223)
at hudson.remoting.Engine.innerRun(Engine.java:743)
at hudson.remoting.Engine.run(Engine.java:518)
Caused by: org.jenkinsci.remoting.protocol.impl.ConnectionRefusalException: Unknown client name: default-241qg
at org.jenkinsci.remoting.protocol.impl.ConnectionHeadersFilterLayer.newAbortCause(ConnectionHeadersFilterLayer.java:378)
at org.jenkinsci.remoting.protocol.impl.ConnectionHeadersFilterLayer.onRecvClosed(ConnectionHeadersFilterLayer.java:433)
at org.jenkinsci.remoting.protocol.ProtocolStack$Ptr.onRecvClosed(ProtocolStack.java:816)
at org.jenkinsci.remoting.protocol.FilterLayer.onRecvClosed(FilterLayer.java:287)
at org.jenkinsci.remoting.protocol.impl.SSLEngineFilterLayer.onRecvClosed(SSLEngineFilterLayer.java:172)
at org.jenkinsci.remoting.protocol.ProtocolStack$Ptr.onRecvClosed(ProtocolStack.java:816)
at org.jenkinsci.remoting.protocol.NetworkLayer.onRecvClosed(NetworkLayer.java:154)
at org.jenkinsci.remoting.protocol.impl.BIONetworkLayer.access$1500(BIONetworkLayer.java:48)
at org.jenkinsci.remoting.protocol.impl.BIONetworkLayer$Reader.run(BIONetworkLayer.java:247)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at hudson.remoting.Engine$1.lambda$newThread$0(Engine.java:117)
at java.lang.Thread.run(Thread.java:748)
Suppressed: java.nio.channels.ClosedChannelException
... 7 more
Jun 23, 2021 9:12:05 PM hudson.remoting.jnlp.Main$CuiListener error
SEVERE: The server rejected the connection: None of the protocols were accepted
java.lang.Exception: The server rejected the connection: None of the protocols were accepted
at hudson.remoting.Engine.onConnectionRejected(Engine.java:828)
at hudson.remoting.Engine.innerRun(Engine.java:768)
at hudson.remoting.Engine.run(Engine.java:518)
문제 정의:
젠킨스를 통해서 앱 배포시에 pod가 계속 생성 및 error를 반복하는 현상
영향받는 단원:
5.4, 5.5
문제 원인:
젠킨스 kubernetes-client-api 버전이 4.11.1에서 5.4.1로 올라가면서, 기존에 젠킨스 버전(2.249.3)에서 사용하는 쿠버네티스 플러그인(1.27.7)과 호환되지 않음
가능한 해결방안:
현재 상태 복구 및 진행 가이드:
관련 PR들
관련 소스
관련 로그