在Kubernetes(Rancher)中启动minicondor镜像失败,condor_master无法运行
编辑补充:根因说明
该问题由PSP(Pod安全策略)导致:当前环境默认禁止condor用户的权限提升,而supervisord以root用户运行,尝试以root身份写入日志、启动condor collector,而非使用condor用户,因此启动失败。
问题描述
mini-condor基础镜像在Kubernetes Rancher的Pod中无法正常启动。使用的镜像为:https://hub.docker.com/r/htcondor/mini ,部署在Rancher(k8s)的自定义命名空间中。
备注:该镜像在以下环境中运行完全正常:
- 本地环境
- minikube默认安装环境
将其作为普通Deployment部署,Pod启动时,Kubernetes默认日志输出如下:
2021-09-15 09:26:36,908 INFO supervisord started with pid 1 2021-09-15 09:26:37,911 INFO spawned: 'condor_master' with pid 20 2021-09-15 09:26:37,912 INFO spawned: 'condor_restd' with pid 21 2021-09-15 09:26:37,917 INFO exited: condor_restd (exit status 127; not expected) 2021-09-15 09:26:37,924 INFO exited: condor_master (exit status 4; not expected) 2021-09-15 09:26:38,926 INFO spawned: 'condor_master' with pid 22 2021-09-15 09:26:38,928 INFO spawned: 'condor_restd' with pid 23 2021-09-15 09:26:38,932 INFO exited: condor_restd (exit status 127; not expected) 2021-09-15 09:26:38,936 INFO exited: condor_master (exit status 4; not expected) 2021-09-15 09:26:40,939 INFO spawned: 'condor_master' with pid 24 2021-09-15 09:26:40,943 INFO spawned: 'condor_restd' with pid 25 2021-09-15 09:26:40,947 INFO exited: condor_restd (exit status 127; not expected) 2021-09-15 09:26:40,948 INFO exited: condor_master (exit status 4; not expected) 2021-09-15 09:26:43,953 INFO spawned: 'condor_master' with pid 26 2021-09-15 09:26:43,955 INFO spawned: 'condor_restd' with pid 27 2021-09-15 09:26:43,959 INFO exited: condor_restd (exit status 127; not expected) 2021-09-15 09:26:43,968 INFO gave up: condor_restd entered FATAL state, too many start retries too quickly 2021-09-15 09:26:43,969 INFO exited: condor_master (exit status 4; not expected) 2021-09-15 09:26:44,970 INFO gave up: condor_master entered FATAL state, too many start retries too quickly
命令执行结果如下:
| CMD | output |
|---|---|
condor_status | CEDAR:6001:Failed to connect to <127.0.0.1:9618> |
condor_master | ERROR "Cannot open log file '/var/log/condor/MasterLog'" at line 174 in file /var/lib/condor/execute/slot1/dir_17406/userdir/.tmpruBd6F/BUILD/condor-9.0.5/src/condor_utils/dprintf_setup.cpp |
首次修复尝试
尝试自定义镜像修改权限,但报错完全相同。用于修复权限问题的Dockerfile如下:
FROM htcondor/mini:9.2-el7 RUN condor_master RUN chown condor:root /var/ RUN chown condor:root /var/log RUN chown -R condor:root /var/log/ RUN chown -R condor:condor /var/log/condor RUN chown condor:condor /var/log/condor/ProcLog RUN chown condor:condor /var/log/condor/MasterLog RUN chmod 775 -R /var/
Kubernetes Rancher的部署yaml文件如下:
apiVersion: apps/v1 kind: Deployment metadata: name: htcondor-mini--all-in-one namespace: grafana-exporter spec: containers: - image: <custom_image> imagePullPolicy: Always name: htcondor-mini--all-in-one resources: {} securityContext: capabilities: {} stdin: true terminationMessagePath: /dev/termination-log terminationMessagePolicy: File tty: true dnsConfig: {} dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30
修改镜像后的命令执行结果如下:
| CMD | output |
|---|---|
condor_status | CEDAR:6001:Failed to connect to <127.0.0.1:9618> |
condor_master | ERROR "Cannot open log file '/var/log/condor/MasterLog'" at line 174 in file /var/lib/condor/execute/slot1/dir_17406/userdir/.tmpruBd6F/BUILD/condor-9.0.5/src/condor_utils/dprintf_setup.cpp |
ls -ld /var/ | drwxrwxr-x 1 condor root 17 Nov 13 2020 /var/ |
ls -ld /var/log/ | drwxrwxr-x 1 condor root 65 Oct 7 11:54 /var/log/ |
ls -ld /var/log/condor | drwxrwxr-x 1 condor condor 240 Oct 7 11:23 /var/log/condor |
ls -ld /var/log/condor/MasterLog | -rwxrwxr-x 1 condor condor 3243 Oct 7 11:23 /var/log/condor/MasterLog |
MasterLog日志内容如下:
10/07/21 11:23:21 ****************************************************** 10/07/21 11:23:21 ** condor_master (CONDOR_MASTER) STARTING UP 10/07/21 11:23:21 ** /usr/sbin/condor_master 10/07/21 11:23:21 ** SubsystemInfo: name=MASTER type=MASTER(2) class=DAEMON(1) 10/07/21 11:23:21 ** Configuration: subsystem:MASTER local:<NONE> class:DAEMON 10/07/21 11:23:21 ** $CondorVersion: 9.2.0 Sep 23 2021 BuildID: 557262 PackageID: 9.2.0-1 $ 10/07/21 11:23:21 ** $CondorPlatform: x86_64_CentOS7 $ 10/07/21 11:23:21 ** PID = 7 10/07/21 11:23:21 ** Log last touched time unavailable (No such file or directory) 10/07/21 11:23:21 ****************************************************** 10/07/21 11:23:21 Using config source: /etc/condor/condor_config 10/07/21 11:23:21 Using local config sources: 10/07/21 11:23:21 /etc/condor/config.d/00-htcondor-9.0.config 10/07/21 11:23:21 /etc/condor/config.d/00-minicondor 10/07/21 11:23:21 /etc/condor/config.d/01-misc.conf 10/07/21 11:23:21 /etc/condor/condor_config.local 10/07/21 11:23:21 config Macros = 73, Sorted = 73, StringBytes = 1848, TablesBytes = 2692 10/07/21 11:23:21 CLASSAD_CACHING is OFF 10/07/21 11:23:21 Daemon Log is logging: D_ALWAYS D_ERROR 10/07/21 11:23:21 SharedPortEndpoint: waiting for connections to named socket master_7_43af 10/07/21 11:23:21 SharedPortEndpoint: failed to open /var/lock/condor/shared_port_ad: No such file or directory 10/07/21 11:23:21 SharedPortEndpoint: did not successfully find SharedPortServer address. Will retry in 60s. 10/07/21 11:23:21 Permission denied error during DISCARD_SESSION_KEYRING_ON_STARTUP, continuing anyway 10/07/21 11:23:21 Adding SHARED_PORT to DAEMON_LIST, because USE_SHARED_PORT=true (to disable this, set AUTO_INCLUDE_SHARED_PORT_IN_DAEMON_LIST=False) 10/07/21 11:23:21 SHARED_PORT is in front of a COLLECTOR, so it will use the configured collector port 10/07/21 11:23:21 Master restart (GRACEFUL) is watching /usr/sbin/condor_master (mtime:1632433213) 10/07/21 11:23:21 Cannot remove wait-for-startup file /var/lock/condor/shared_port_ad 10/07/21 11:23:21 WARNING: forward resolution of ip6-localhost doesn't match 127.0.0.1! 10/07/21 11:23:21 WARNING: forward resolution of ip6-loopback doesn't match 127.0.0.1! 10/07/21 11:23:22 Started DaemonCore process "/usr/libexec/condor/condor_shared_port", pid and pgroup = 9 10/07/21 11:23:22 Waiting for /var/lock/condor/shared_port_ad to appear. 10/07/21 11:23:22 Found /var/lock/condor/shared_port_ad. 10/07/21 11:23:22 Cannot remove wait-for-startup file /var/log/condor/.collector_address 10/07/21 11:23:23 Started DaemonCore process "/usr/sbin/condor_collector", pid and pgroup = 10 10/07/21 11:23:23 Waiting for /var/log/condor/.collector_address to appear. 10/07/21 11:23:23 Found /var/log/condor/.collector_address. 10/07/21 11:23:23 Started DaemonCore process "/usr/sbin/condor_negotiator", pid and pgroup = 11 10/07/21 11:23:23 Started DaemonCore process "/usr/sbin/condor_schedd", pid and pgroup = 12 10/07/21 11:23:24 Started DaemonCore process "/usr/sbin/condor_startd", pid and pgroup = 15 10/07/21 11:23:24 Daemons::StartAllDaemons all daemons were started
内容的提问来源于stack exchange,提问作者blackbird
相关产品推荐
相关产品推荐

