注册公司3个人分别是啥,珠海网站推广优化,学编程多久可以写游戏辅助,免费下载app软件网站基于K8S部署安装Jenkins 1.Jenkins Kubernetes 清单文件2.Kubernetes Jenkins 部署1#xff1a;为 Jenkins 创建 Namespace。 最好将所有DevOps工具分类为与其他应用程序分开的命名空间。2#xff1a;创建“serviceAccount.yaml”文件并复制以下管理员服务帐户清单。1. kubec… 基于K8S部署安装Jenkins 1.Jenkins Kubernetes 清单文件2.Kubernetes Jenkins 部署1为 Jenkins 创建 Namespace。 最好将所有DevOps工具分类为与其他应用程序分开的命名空间。2创建“serviceAccount.yaml”文件并复制以下管理员服务帐户清单。1. kubectl 创建服务帐户。 3 创建“volume.yaml”并复制以下持久性卷清单。1. kubectl 获取工作节点主机名。2.使用 kubectl 创建卷 4创建名为“deployment.yaml”的部署文件并复制以下部署清单。1.使用 kubectl 创建部署。2.检查部署状态。3.查看部署详细信息。 3.使用 Kubernetes 服务访问 Jenkins1.创建“service.yaml”并复制以下服务清单2.使用 kubectl 创建 Jenkins 服务。3.显示devops-tools所有 Deployme 中的命名空间4.显示devops-tools所有 Pod 中的命名空间5.运行 exec 命令直接从如下所示的位置获取密码。 4.访问 Jenkins 仪表板和安装设置 1.Jenkins Kubernetes 清单文件
此处使用的所有 Jenkins Kubernetes 清单文件都托管在 GitHub 上。 克隆存储库。
[rootmaster test]# git clone https://github.com/scriptcamp/kubernetes-jenkins
正克隆到 kubernetes-jenkins...
remote: Enumerating objects: 16, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 16 (delta 1), reused 0 (delta 0), pack-reused 9
接收对象中: 100% (16/16), 完成.
处理 delta 中: 100% (1/1), 完成rootmaster test]# cd kubernetes-jenkins/
[rootmaster kubernetes-jenkins]# ls
deployment.yaml namespace.yaml README.md serviceAccount.yaml service.yaml volume.yaml2.Kubernetes Jenkins 部署
让我们开始在 Kubernetes 上部署 Jenkins。
1为 Jenkins 创建 Namespace。 最好将所有DevOps工具分类为与其他应用程序分开的命名空间。
[rootmaster kubernetes-jenkins]# kubectl create namespace devops-tools
namespace/devops-tools created
#查看空间名
[rootmaster jenkins]# kubectl get namespaces
NAME STATUS AGE
default Active 6d
devops-tools Active 58m
ingress-nginx Active 4d23h
jenkins Active 3d18h
kube-flannel Active 6d
kube-node-lease Active 6d
kube-public Active 6d
kube-system Active 6d
[rootmaster jenkins]2创建“serviceAccount.yaml”文件并复制以下管理员服务帐户清单。
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: jenkins-admin
rules:- apiGroups: []resources: [*]verbs: [*]
---
apiVersion: v1
kind: ServiceAccount
metadata:name: jenkins-adminnamespace: devops-tools
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: jenkins-admin
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: jenkins-admin
subjects:
- kind: ServiceAccountname: jenkins-adminnamespace: devops-toolsserviceAccount.yaml’ 创建一个 ‘jenkins-admin’ clusterRole ‘jenkins-admin’ ServiceAccount并将 ‘clusterRole’ 绑定到服务账户。
“jenkins-admin”集群角色具有管理集群组件的所有权限。 您还可以通过指定单个资源操作来限制访问。
1. kubectl 创建服务帐户。
[rootmaster kubernetes-jenkins]# kubectl apply -f serviceAccount.yaml
clusterrole.rbac.authorization.k8s.io/jenkins-admin created3 创建“volume.yaml”并复制以下持久性卷清单。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: v1
kind: PersistentVolume
metadata:name: jenkins-pv-volumelabels:type: local
spec:storageClassName: local-storageclaimRef:name: jenkins-pv-claimnamespace: devops-toolscapacity:storage: 10GiaccessModes:- ReadWriteOncelocal:path: /mntnodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node1 #替换为任何一个集群工作节点主机名
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: jenkins-pv-claimnamespace: devops-tools
spec:storageClassName: local-storageaccessModes:- ReadWriteOnceresources:requests:storage: 3Gi重要提示将“node1”替换为任何一个集群工作节点主机名。
1. kubectl 获取工作节点主机名。
[rootmaster jenkins]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 6d v1.23.12
node1 Ready none 6d v1.23.12
node2 Ready none 6d v1.23.12
对于卷我们使用“本地”存储类进行演示。 这意味着它在“/mnt”位置下的特定节点中创建一个“PersistentVolume”卷。
由于“本地”存储类需要节点选择器因此您需要正确指定工作节点名称以便 Jenkins pod 在特定节点中进行调度。
如果 pod 被删除或重新启动数据将保留在节点卷中。 但是如果节点被删除您将丢失所有数据。
理想情况下您应使用云提供商提供的可用存储类的持久卷或者使用集群管理员提供的持久性卷以在节点故障时持久化数据。
2.使用 kubectl 创建卷
[rootmaster kubernetes-jenkins]# kubectl create -f volume.yaml
storageclass.storage.k8s.io/local-storage created
4创建名为“deployment.yaml”的部署文件并复制以下部署清单。
apiVersion: apps/v1
kind: Deployment
metadata:name: jenkinsnamespace: devops-tools
spec:replicas: 1selector:matchLabels:app: jenkins-servertemplate:metadata:labels:app: jenkins-serverspec:securityContext:fsGroup: 1000runAsUser: 1000serviceAccountName: jenkins-admincontainers:- name: jenkinsimage: jenkins/jenkins:ltsresources:limits:memory: 2Gicpu: 1000mrequests:memory: 500Micpu: 500mports:- name: httpportcontainerPort: 8080- name: jnlpportcontainerPort: 50000livenessProbe:httpGet:path: /loginport: 8080initialDelaySeconds: 90periodSeconds: 10timeoutSeconds: 5failureThreshold: 5readinessProbe:httpGet:path: /loginport: 8080initialDelaySeconds: 60periodSeconds: 10timeoutSeconds: 5failureThreshold: 3volumeMounts:- name: jenkins-datamountPath: /var/jenkins_homevolumes:- name: jenkins-datapersistentVolumeClaim:claimName: jenkins-pv-claim在这个 Jenkins Kubernetes 部署中我们使用了以下内容
1.ecurityContext’以便 Jenkins pod 能够写入本地持久卷。
2.活动和就绪情况探测用于监视 Jenkins pod 的运行状况。
3.基于保存 Jenkins 数据路径“/var/jenkins_home”的本地持久性卷。
如果不需要本地存储持久卷可以将部署中的卷定义替换为主机目录如下所示。
volumes:
- name: jenkins-dataemptyDir: \{}1.使用 kubectl 创建部署。
[rootmaster kubernetes-jenkins]# kubectl apply -f deployment.yaml
deployment.apps/jenkins created2.检查部署状态。
[rootmaster kubernetes-jenkins]# kubectl get deployments -n devops-tools
NAME READY UP-TO-DATE AVAILABLE AGE
jenkins 0/1 1 0 9s
3.查看部署详细信息。
[rootmaster kubernetes-jenkins]# kubectl describe deployments --namespacedevops-tools
Name: jenkins
Namespace: devops-tools
CreationTimestamp: Sun, 04 Aug 2024 22:15:18 -0400
Labels: none
Annotations: deployment.kubernetes.io/revision: 1
Selector: appjenkins-server
Replicas: 1 desired | 1 updated | 1 total | 0 available | 1 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:Labels: appjenkins-serverService Account: jenkins-adminContainers:jenkins:Image: jenkins/jenkins:ltsPorts: 8080/TCP, 50000/TCPHost Ports: 0/TCP, 0/TCPLimits:cpu: 1memory: 2GiRequests:cpu: 500mmemory: 500MiLiveness: http-get http://:8080/login delay90s timeout5s period10s #success1 #failure5Readiness: http-get http://:8080/login delay60s timeout5s period10s #success1 #failure3Environment: noneMounts:/var/jenkins_home from jenkins-data (rw)Volumes:jenkins-data:Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)ClaimName: jenkins-pv-claimReadOnly: false
Conditions:Type Status Reason---- ------ ------Available False MinimumReplicasUnavailableProgressing True ReplicaSetUpdated
OldReplicaSets: none
NewReplicaSet: jenkins-b96f7764f (1/1 replicas created)
Events:Type Reason Age From Message---- ------ ---- ---- -------Normal ScalingReplicaSet 14s deployment-controller Scaled up replica set jenkins-b96f7764f to 13.使用 Kubernetes 服务访问 Jenkins
现在我们已经创建了一个部署。 但是它无法向外界开放。 为了从外部世界访问 Jenkins 部署我们需要创建一个服务并将其映射到部署。
1.创建“service.yaml”并复制以下服务清单
apiVersion: v1
kind: Service
metadata:name: jenkins-servicenamespace: devops-toolsannotations:prometheus.io/scrape: trueprometheus.io/path: /prometheus.io/port: 8080
spec:selector:app: jenkins-servertype: NodePortports:- port: 8080targetPort: 8080nodePort: 32000在这里我们使用类型为“NodePort”它将在端口 32000 上的所有 kubernetes 节点 IP 上公开 Jenkins。 如果您有入口设置则可以创建入口规则来访问 Jenkins。 此外如果您在 AWS、Google 或 Azure 云上运行集群则可以将 Jenkins 服务公开为 Loadbalancer。
2.使用 kubectl 创建 Jenkins 服务。
[rootmaster kubernetes-jenkins]# kubectl apply -f service.yaml
service/jenkins-service created3.显示devops-tools所有 Deployme 中的命名空间
[rootmaster kubernetes-jenkins]# kubectl get deployments -n devops-tools
NAME READY UP-TO-DATE AVAILABLE AGE
jenkins 0/1 1 0 31s4.显示devops-tools所有 Pod 中的命名空间
[rootmaster kubernetes-jenkins]# kubectl get pods --namespacedevops-tools
NAME READY STATUS RESTARTS AGE
jenkins-b96f7764f-7zzbn 1/1 Running 0 3m5s
5.运行 exec 命令直接从如下所示的位置获取密码。
kubectl exec -it jenkins-b96f7764f-7zzbn cat /var/jenkins_home/secrets/initialAdminPassword -n devops-tools4.访问 Jenkins 仪表板和安装设置
浏览器输入http://node-ip:32000将 管理员账户密码 复制到对应的地方点击 继续 这里建议点击 选择插件来安装在点击 无 不安装任何插件再点击 安装因为我们没有配置镜像安装插件是从外网下载过来的会比较慢并且下载的插件可能会出现不兼容等状况导致失败率很高 [进入到创建管理员页面填写账户信息后 保存并完成 进入以下页面配置 jenkins 的 url 一般使用默认的就行了保存并完成 可以点击 开始使用 Jenkins 直接登录进入 Jenkins