사전조건)
k8s 설치
설치과정)
git 에서 다운
git clone https://github.com/scriptcamp/kubernetes-jenkins
namespce 생성
kubectl create namespace jenkins
storageclass 생성
serviceAccount.yaml 생성 / apply
volume.yaml 생성/ apply
필자의 경우, 타 서버에서 볼륨을 관리하기 때문에 local, nodeAffinity 부분을 다음과 같이 수정하였다.
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: jenkins-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: Immediate
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-pv-volume
spec:
storageClassName: jenkins-storage
claimRef:
name: jenkins-pv-claim
namespace: jenkins
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath:
path: /home/master/storage1/PV-jenkins
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins-pv-claim
namespace: jenkins
spec:
storageClassName: jenkins-storage
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
deployment.yaml 생성/apply
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins
namespace: jenkins
spec:
replicas: 1
selector:
matchLabels:
app: jenkins-server
template:
metadata:
labels:
app: jenkins-server
spec:
securityContext:
fsGroup: 1000
runAsUser: 1000
serviceAccountName: jenkins-admin
containers:
- name: jenkins
image: docker.io/jenkins/jenkins:lts
imagePullPolicy: Always
resources:
limits:
memory: "2Gi"
cpu: "1000m"
requests:
memory: "500Mi"
cpu: "500m"
ports:
- name: httpport
containerPort: 8080
- name: jnlpport
containerPort: 51000
livenessProbe:
httpGet:
path: "/login"
port: 8080
initialDelaySeconds: 90
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 5
readinessProbe:
httpGet:
path: "/login"
port: 8080
initialDelaySeconds: 60
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
volumeMounts:
- name: jenkins-data
mountPath: /var/jenkins_home
volumes:
- name: jenkins-data
persistentVolumeClaim:
claimName: jenkins-pv-claim
deployment 상태 확인
pod 상태 확인
pv 상태 확인
pvc 상태 확인
kubectl apply -f service.yaml 생성/ apply
접속
http://<node-ip>:32000
젠킨스 password 확인
kubectl get pods -n jenkins
+) 필자의 경우 pod 를 띄울때 ImageInspectError 에러가 발생하여 애먹었다.
pod 를 describe 해보았을 때 event에 에러메세지로 아래와 같이 출력되었고, docker.io 설정이 누락되어 발견됨을 찾음!
rpc error: code = Unknown desc = short-name "jenkins/jenkins:lts" did not resolve to an alias and no unqualified-search registries are defined in "/etc/containers/registries.conf"
/etc/containers/registries.conf 파일에 아래 내용 추가 후 정상적으로 파드 뜨는것을 확인하였다.
[registries.search]
registries = ['docker.io']
'직무스터디 > QA 노하우' 카테고리의 다른 글
[k8s] Kubernetes 클러스터를 재설치 reset, init (0) | 2024.07.11 |
---|