K8S是一个开源的容器编排工具,可以实现在多台主机上进行容器化应用的部署、扩展和管理。而Jenkins是一个开源的持续集成和交付工具,方便开发者进行代码构建、测试和发布。本文将介绍如何在K8S上安装Jenkins,并提供详细的代码示例和步骤说明。

## 安装Jenkins步骤
下面是在K8S上安装Jenkins的步骤和相应的代码示例:

| 步骤 | 描述 | 代码示例|
|--------|--------|--------|
| 步骤1 | 创建Jenkins命名空间 | `kubectl create namespace jenkins`|
| 步骤2 | 创建Jenkins持久卷存储 | `kubectl apply -f jenkins-persistent-volume.yaml`|
| 步骤3 | 创建Jenkins部署 | `kubectl apply -f jenkins-deployment.yaml`|
| 步骤4 | 创建Jenkins服务 | `kubectl apply -f jenkins-service.yaml`|
| 步骤5 | 获取Jenkins管理员密码 | `kubectl exec -it cat /var/jenkins_home/secrets/initialAdminPassword`|

### 步骤1:创建Jenkins命名空间
首先需要在K8S中创建一个专门用于Jenkins的命名空间,可以使用kubectl命令来创建命名空间:

```bash
kubectl create namespace jenkins
```

### 步骤2:创建Jenkins持久卷存储
Jenkins需要一个持久卷存储来保存构建日志和配置文件等数据。我们可以使用一个PersistentVolume和一个PersistentVolumeClaim来实现持久化存储。

首先,创建一个名为jenkins-persistent-volume.yaml的文件,内容如下:

```yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-pv
spec:
storageClassName: manual
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/data/jenkins"
```

然后,使用kubectl命令来应用该文件:

```bash
kubectl apply -f jenkins-persistent-volume.yaml
```

### 步骤3:创建Jenkins部署
下一步是创建Jenkins的部署,我们可以使用一个Deployment来管理Jenkins的Pod。

创建一个名为jenkins-deployment.yaml的文件,内容如下:

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins-deployment
spec:
replicas: 1
selector:
matchLabels:
app: jenkins
template:
metadata:
labels:
app: jenkins
spec:
containers:
- name: jenkins
image: jenkins/jenkins:lts
ports:
- containerPort: 8080
volumeMounts:
- name: jenkins-persistent-volume
mountPath: /var/jenkins_home
volumes:
- name: jenkins-persistent-volume
persistentVolumeClaim:
claimName: jenkins-pvc
```

使用kubectl命令来应用该文件:

```bash
kubectl apply -f jenkins-deployment.yaml
```

### 步骤4:创建Jenkins服务
为了能够通过浏览器访问Jenkins,我们需要创建一个服务来暴露Jenkins的端口。

创建一个名为jenkins-service.yaml的文件,内容如下:

```yaml
apiVersion: v1
kind: Service
metadata:
name: jenkins-service
spec:
type: LoadBalancer
ports:
- port: 8080
targetPort: 8080
selector:
app: jenkins
```

使用kubectl命令来应用该文件:

```bash
kubectl apply -f jenkins-service.yaml
```

### 步骤5:获取Jenkins管理员密码
安装完成后,我们需要获取Jenkins管理员密码,以便进行后续配置。我们可以使用kubectl命令来查找Jenkins的Pod名称,并查看管理员密码:

```bash
kubectl exec -it cat /var/jenkins_home/secrets/initialAdminPassword
```

将``替换为实际的Jenkins Pod名称。

## 总结
通过以上步骤,我们可以在K8S上成功安装并配置Jenkins。安装过程中,我们创建了一个命名空间、一个持久卷存储、一个Deployment和一个Service,并且获取了管理员密码。这些步骤并不复杂,但能够为我们提供一个强大的持续集成和交付平台。希望本文对于刚入行的小白能够有所帮助,让他们能够快速上手使用K8S和Jenkins。