k8s安装jenkins整理的命令

本文档详细记录了在Kubernetes(k8s)环境中使用yaml文件安装Jenkins遇到的问题,包括pod状态pending、资源已存在导致的创建失败等。通过删除现有资源、重置kubeadm、调整系统配置以及更新yaml文件来解决。同时,讨论了pod在k8s中的作用,如网络共享、存储管理和重启策略,并提供了k8s初始化、配置阿里云镜像仓库等相关命令。


j8s使用yaml安装jenkins,一直是pending
项删除pod结果失败
后想通过重新执行命令进行覆盖,执行cd jenkins-master 
kubectl create -f .  报错,提示
Error from server (AlreadyExists): error when creating "Service.yaml": services "jenkins" already exists
Error from server (AlreadyExists): error when creating "ServiceaAcount.yaml": serviceaccounts "jenkins" already exists
Error from server (AlreadyExists): error when creating "StatefulSet.yaml": statefulsets.apps "jenkins" already exists
Error from server (AlreadyExists): error when creating "rbac.yaml": roles.rbac.authorization.k8s.io "jenkins" already exists

通过 
kubectl delete -f Service.yaml
kubectl delete -f ServiceaAcount.yaml
kubectl delete -f StatefulSet.yaml
kubectl delete -f rbac.yaml
挨个删除
查看kubectl get pods -n kube-ops  ,发现jenkins  已不存在了


查看日志
journalctl -f -u kubelet
systemctl status kubelet.service

重置
kubeadm reset

/sys/fs/cgroup/pids/libc

<think>嗯,用户想了解Jenkins调用Kubernetes的方法,这个问题在云原生CI/CD领域很典型。结合用户提供的5个站内引用,可以整理出三种主流实现方式: 用户似乎是个DevOps工程师,正在搭建容器化的构建环境。ta的引用里提到过生产环境安全问题,说明这是个实际项目而非实验环境。引用[3]和[4]特别值得关注,它们分别详细描述了Kubernetes插件的配置方法和架构价值。 最核心的解决方案是Kubernetes插件方案。根据引用[3],配置要点包括:集群地址填kubernetes.default.svc.cluster.local这个内部服务域名,需要添加包含token的Secret text凭据,还要注意禁用HTTPS证书验证的生产环境风险。这里有个细节是Jenkins地址的格式——必须用http://服务名.命名空间:端口/jenkins这样的完整路径。 安全方面用户有明显顾虑。引用[2]提到直接拷贝kubeconfig的风险,这确实是反模式。应该引导用户采用ServiceAccount方案,像引用[3]那样用最小权限的token更安全。另外引用[5]提示的镜像拉取问题也值得加入注意事项。 动态资源管理是用户没明说但肯定关心的点。引用[4]强调的动态创建Slave Pod特性需要突出说明,特别是任务完成后自动销毁的设计,这对控制云计算成本很关键。 最后需要补充实践建议。引用[1]的示例脚本虽然有效但较旧,应该提醒groovy脚本的现代写法;还要区分声明式流水线和脚本式流水线的集成差异,这对用户实际编码很重要。 对了,用户引用的材料里有几个配置示例格式混乱,比如引用[2]的kubectl安装命令夹杂HTML符号,响应时需要自动修正为清晰代码块。 </think>根据引用资料,Jenkins 调用 Kubernetes 主要有以下两种核心方法,适用于不同场景: --- ### **方法一:使用 Kubernetes Plugin(推荐)** > **原理**:Jenkins 通过 Kubernetes 插件动态创建临时 Pod 作为构建代理(Slave),任务完成后自动销毁 Pod,实现资源弹性伸缩 [^3][^4]。 > **配置步骤**: > > 1. **安装插件** > Jenkins 后台安装 `Kubernetes Plugin`。 > > 2. **配置 Kubernetes 连接** > 进入 `Manage Jenkins > Manage Nodes and Clouds > Configure Clouds`: > - **名称**:自定义(如 `kubernetes`) > - **Kubernetes 地址**:集群内部 API 地址(默认 `https://kubernetes.default.svc.cluster.local`)[^3] > - **禁用 HTTPS 证书检查**:测试环境可勾选(生产环境需配置正式证书) > - **凭据**:添加 `Secret text` 类型凭据,内容为 Kubernetes ServiceAccount 的 Token [^3] > ```bash > # 获取 Token 命令(需有 kubeconfig 权限) > kubectl describe secret $(kubectl get secret -n <namespace> | grep service-account | awk '{print $1}') -n <namespace> | grep token: | awk '{print $2}' > ``` > - **Jenkins 地址**:`http://<jenkins-service>.<namespace>:<port>/jenkins` [^3] > > 例如:`http://jenkins-service.jenkins:8080/jenkins` > > 3. **配置 Pod 模板** > 定义 Slave Pod 的容器镜像、资源限制、挂载卷等(示例见下方代码块): > ```groovy > podTemplate( > containers: [ > containerTemplate(name: 'jnlp', image: 'jenkins/inbound-agent:latest'), > containerTemplate(name: 'maven', image: 'maven:3.8-jdk-11', command: 'sleep', args: '99d') > ], > volumes: [hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock')] > ) { > node(POD_LABEL) { > stage('Build') { > container('maven') { > sh 'mvn clean package' > } > } > } > } > ``` > > **优点**: > - 动态资源分配,节省成本 [^4] > - 无需维护固定 Agent 节点 > - 原生集成 Kubernetes 调度策略 --- ### **方法二:通过 kubectl 命令行(特定场景)** > **原理**:在 Jenkins Agent 上安装 `kubectl`,通过 kubeconfig 文件直接操作集群(需谨慎管理权限)[^2]。 > **步骤**: > > 1. **拷贝 kubeconfig 到 Jenkins** > 将 Kubernetes 的 `config` 文件复制到 Jenkins 机器: > ```bash > scp /root/.kube/config jenkins-host:/root/.kube/ > ``` > > 2. **安装 kubectl** > 在 Jenkins Agent 上安装命令行工具: > ```bash > yum install -y kubectl # CentOS > ``` > > 3. **在 Pipeline 中调用命令** > ```groovy > stage('Deploy') { > steps { > script { > sh "kubectl apply -f deployment.yaml" > } > } > } > ``` > > **适用场景**: > - 需直接操作集群(如部署 Helm Chart) > - 无法使用 Kubernetes 插件的老版本 Jenkins > > **风险**: > - kubeconfig 文件泄露可能导致安全风险 [^2] > - 需手动管理 Agent 节点资源 --- ### **关键注意事项** 1. **镜像拉取权限** 若需从私有仓库拉取镜像,需在 Kubernetes 中配置 `imagePullSecrets` [^5]。 2. **网络连通性** Jenkins Master 需能访问 Kubernetes API Server(若集群在云上,需配置 VPC 打通)。 3. **ServiceAccount 权限** 为 Jenkins 创建最小权限的 RBAC 角色,避免使用 `cluster-admin` [^3]。 --- ### **相关问题** 1. Jenkins Kubernetes 插件启动 Slave Pod 一直处于 Pending 状态,可能是什么原因? 2. 如何为 Jenkins 的 Kubernetes 插件配置安全的 RBAC 权限? 3. 在 Kubernetes 中运行的 Jenkins 如何持久化构建日志和工件? 4. 如何通过 Jenkins Pipeline 实现金丝雀发布到 Kubernetes 集群? > **引用说明**: > - 动态 Agent 机制详见 [^3][^4] > - kubectl 方案的安全风险参考 [^2] > - 镜像拉取配置参考 [^5]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

励志重写JDK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值