扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
如何在K8S中安装jenkins?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的桂林网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!以 NFS 为存储卷的示例,将在 NFS 存储卷上创建 Jenkins 目录,然后创建 NFS 类型的 PV、PVC。
进入 NFS Server 服务器,然后再其存储目录下创建 Jenkins 目录,并且确保目录对其它用户有读写权限。
$ mkdir /nfs/data/jenkins
创建 Kubernetes 的 PV、PVC 资源,其中 PV 用于与 NFS 关联,需要设置 NFS Server 服务器地址和挂载的路径,修改占用空间大小。而 PVC 则是与应用关联,方便应用与 NFS 绑定挂载,下面是 PV、PVC 的资源对象 yaml 文件。
jenkins-storage.yaml
apiVersion: v1kind: PersistentVolumemetadata: name: jenkins labels: app: jenkinsspec: capacity: storage: 50Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain mountOptions: #NFS挂载选项 - hard - nfsvers=4.1 nfs: #NFS设置 path: /nfs/data/jenkins # 根据上一步的地址来定 server: 192.168.2.11 # 根据nfs server ip实际来设置---kind: PersistentVolumeClaimapiVersion: v1metadata: name: jenkinsspec: accessModes: - ReadWriteOnce resources: requests: storage: 50Gi #存储空间大小 selector: matchLabels: app: jenkins
将 PV 与 PVC 部署到 Kubernetes 中:
$ kubectl apply -f jenkins-storage.yaml -n public
Kubernetes 集群一般情况下都默认开启了 RBAC 权限,所以需要创建一个角色和服务账户,设置角色拥有一定权限,然后将角色与 ServiceAccount 绑定,最后将 ServiceAccount 与 Jenkins 绑定,这样来赋予 Jenkins 一定的权限,使其能够执行一些需要权限才能进行的操作。这里为了方便,将 cluster-admin 绑定到 ServiceAccount 来保证 Jenkins 拥有足够的权限。
jenkins-rbac.yaml
apiVersion: v1kind: ServiceAccountmetadata: name: jenkins-admin #ServiceAccount名 namespace: mydlqcloud #指定namespace,一定要修改成你自己的namespace labels: name: jenkins---kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata: name: jenkins-admin labels: name: jenkinssubjects: - kind: ServiceAccount name: jenkins-admin namespace: mydlqcloudroleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io
将 Jenkins 的 RBAC 部署到 Kubernetes 中:
$ kubectl apply -f jenkins-rbac.yaml -n public
在 Kubernetes 中部署服务需要部署文件,这里部署 Jenkins 需要创建 Service 与 Deployment 对象,其中两个对象需要做一些配置,如下:
jenkins-deployment.yaml
apiVersion: v1kind: Servicemetadata: name: jenkins labels: app: jenkinsspec: type: NodePort ports: - name: http port: 8080 #服务端口 targetPort: 8080 nodePort: 32001 #NodePort方式暴露 Jenkins 端口 - name: jnlp port: 50000 #代理端口 targetPort: 50000 nodePort: 32002 selector: app: jenkins---apiVersion: apps/v1kind: Deploymentmetadata: name: jenkins labels: app: jenkinsspec: selector: matchLabels: app: jenkins replicas: 1 template: metadata: labels: app: jenkins spec: serviceAccountName: jenkins-admin containers: - name: jenkins image: jenkins/jenkins:2.204.6 securityContext: runAsUser: 0 #设置以ROOT用户运行容器 privileged: true #拥有特权 ports: - name: http containerPort: 8080 - name: jnlp containerPort: 50000 resources: limits: memory: 2Gi cpu: "2000m" requests: memory: 2Gi cpu: "2000m" env: - name: LIMITS_MEMORY valueFrom: resourceFieldRef: resource: limits.memory divisor: 1Mi - name: "JAVA_OPTS" #设置变量,指定时区和 jenkins slave 执行者设置 value: " -Xmx$(LIMITS_MEMORY)m -XshowSettings:vm -Dhudson.slaves.NodeProvisioner.initialDelay=0 -Dhudson.slaves.NodeProvisioner.MARGIN=50 -Dhudson.slaves.NodeProvisioner.MARGIN0=0.85 -Duser.timezone=Asia/Shanghai " - name: "JENKINS_OPTS" value: "--prefix=/jenkins" #设置路径前缀加上 Jenkins volumeMounts: #设置要挂在的目录 - name: data mountPath: /var/jenkins_home volumes: - name: data persistentVolumeClaim: claimName: jenkins #设置PVC
参数说明:
-Dhudson.slaves.NodeProvisioner.initialDelay=0 -Dhudson.slaves.NodeProvisioner.MARGIN=50 -Dhudson.slaves.NodeProvisioner.MARGIN0=0.85
有了上面的部署文件后,再将 Jenkins 部署到 Kuberntes 中:
$ kubectl create -f jenkins-deployment.yaml -n mydlqcloud
在安装 Jenkins 时候,它默认生成一段随机字符串在控制台日志中,用于安装时验证。这里需要获取它输出在控制台中的日志信息,来获取 Token 字符串。
查看 Jenkins Pod 启动日志
$ kubectl logs $(kubectl get pods -n mydlqcloud | awk '{print $1}' | grep jenkins) -n mydlqcloud
在日志中可以看到,默认给的token为:
************************************************************* Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: 96b19967a2aa4e7ab7d2ea5c6f55db8d This may also be found at: /var/jenkins_home/secrets/initialAdminPassword*************************************************************
输入 Kubernetes 集群地址和 Jenkins Service 设置的 NodePort 端口号,访问 Jenkins UI 界面进行初始化,按以下步骤执行:
进入Jenkins
输入 Kubernetes 集群地址和上面设置的 Nodeport 方式的端口号 32001,然后输入上面获取的 Token 字符串。例如,本人 Kubernetes 集群 IP 为 192.168.2.11 ,所以就可以访问地址 http://192.168.2.11:32001/jenkins 进入 Jenkins 初始化界面。
感谢各位的阅读!看完上述内容,你们对如何在K8S中安装jenkins大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注创新互联行业资讯频道。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流