kubernetes安装Jenkins 挂载NAS 并汉化
首先我们要建立一个namespacekubectl create namespace kube-opspvc pv关于pv 我用的是阿里的k8s nas 所以点点点就好, 这里提供了yml创建方式, 一样的, 注意pvc的名字要和deployment声明的一致apiVersion: v1kind: PersistentVolumemetadata:name: opspvspec:capacity:
·
首先我们要建立一个namespace
kubectl create namespace kube-ops
pvc pv
关于pv 我用的是阿里的k8s nas 所以点点点就好, 这里提供了yml创建方式, 一样的, 注意pvc的名字要和deployment声明的一致
apiVersion: v1
kind: PersistentVolume
metadata:
name: opspv
spec:
capacity:
storage: 20Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Delete
nfs:
server: 10.151.39.52
path: /data/k8s
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: opspvc
namespace: kube-ops
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 20Gi
deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins2
namespace: kube-ops
spec:
selector:
matchLabels:
app: jenkins2
template:
metadata:
labels:
app: jenkins2
spec:
terminationGracePeriodSeconds: 10
serviceAccount: jenkins2
containers:
- name: jenkins
image: jenkins/jenkins:lts
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
name: web
protocol: TCP
- containerPort: 50000
name: agent
protocol: TCP
resources:
limits:
cpu: 1000m
memory: 1Gi
requests:
cpu: 500m
memory: 512Mi
livenessProbe:
httpGet:
path: /login
port: 8080
initialDelaySeconds: 60
timeoutSeconds: 5
failureThreshold: 12
readinessProbe:
httpGet:
path: /login
port: 8080
initialDelaySeconds: 60
timeoutSeconds: 5
failureThreshold: 12
volumeMounts:
- name: jenkinshome
subPath: jenkins2
mountPath: /var/jenkins_home
securityContext:
fsGroup: 1000
volumes:
- name: jenkinshome
persistentVolumeClaim:
claimName: opspvc
SVC
apiVersion: v1
kind: Service
metadata:
name: jenkins2
namespace: kube-ops
labels:
app: jenkins2
spec:
selector:
app: jenkins2
type: NodePort
ports:
- name: web
port: 8080
targetPort: web
nodePort: 30002
- name: agent
port: 50000
targetPort: agent
注意k8s是基于rbac的权限控制的, 我们需要创建一个service account, 赋予必要的权限.
apiVersion: v1
kind: ServiceAccount
metadata:
name: jenkins2
namespace: kube-ops
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: jenkins2
rules:
- apiGroups: ["extensions", "apps"]
resources: ["deployments"]
verbs: ["create", "delete", "get", "list", "watch", "patch", "update"]
- apiGroups: [""]
resources: ["services"]
verbs: ["create", "delete", "get", "list", "watch", "patch", "update"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]
resources: ["pods/exec"]
verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]
resources: ["pods/log"]
verbs: ["get","list","watch"]
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: jenkins2
namespace: kube-ops
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: jenkins2
subjects:
- kind: ServiceAccount
name: jenkins2
namespace: kube-ops
注意挂载的时候要确保pod对该挂载点有读写权限, 阿里nas的读写权限在用户权限组里可以设置, 自己搭建的需要chown -R 1000 一下挂载你的目录, 注意这个目录是nas的, 不是你pod里的.
推荐的apply顺序,
- 先创建 pv 在创建pvc
- deployment
- svc
- 最后暴露出来, 可以svc的nodeport 也可以ingress映射出去
汉化方式, 在jenkins的插件商店里搜索locale关键字, 会出现两个插件,
一个是locale, 一个是locale simplify chinese 全部安装,
然后去设置, 找到这个选项, 保持跟我一样
汉化完毕
更多推荐



所有评论(0)