k8s部署jenkins
apiVersion: apps/v1kind: Deploymentmetadata:labels:app: jenkinsname: ssx-jenkins-dmnamespace: ssxspec:replicas: 1selector: #标签选择器,与上面的标签共同作用matchLabels: #选择包含标签app:mysql的资源app: jenkinstemplate: #这是选择或
·
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: jenkins
name: ssx-jenkins-dm
namespace: ssx
spec:
replicas: 1
selector: #标签选择器,与上面的标签共同作用
matchLabels: #选择包含标签app:mysql的资源
app: jenkins
template: #这是选择或创建的Pod的模板
metadata: #Pod的元数据
labels: #Pod的标签,上面的selector即选择包含标签app:mysql的Pod
app: jenkins
spec: #期望Pod实现的功能(即在pod中部署)
containers: #生成container,与docker中的container是同一种
- name: ssx-jenkins-c
image: node102:5000/ssx-jenkins:v1.0
ports:
- containerPort: 8080 # 开启本容器的80端口可访问
volumeMounts:
- mountPath: /var/jenkins_home #这是mysql容器内保存数据的默认路径
name: c-v-path-jenkins
- mountPath: /etc/localtime #这是mysql容器内保存数据的默认路径
name: c-v-path-time
volumes:
- name: c-v-path-jenkins #和上面保持一致 这是本地的文件路径,上面是容器内部的路径
hostPath:
path: /root/apps/k8s/for_docker_volume/jenkins #此路径需要实现创建 注意要给此路径授权777权限 不然pod访问不到
- name: c-v-path-time #设置容器的时区和宿主机保持一致
hostPath:
path: /etc/localtime
nodeSelector: #把此pod部署到指定的node标签上
kubernetes.io/hostname: node101
---
apiVersion: v1
kind: Service
metadata:
labels:
app: jenkins
name: ssx-jenkins-sv
namespace: ssx
spec:
ports:
- port: 9000 #我暂时不理解,这个设置 明明没用到?
name: ssx-jenkins-last
protocol: TCP
targetPort: 8080 # 容器nginx对外开放的端口 上面的dm已经指定了
nodePort: 30200 #外网访问的端口
selector:
app: jenkins
type: NodePort
发布后操作
- 因为jenkins脚本很大概率会执行
ssh
命令,要配置和宿主机免密登陆
执行kubectl exec xxx-jenkins-container -it /bin/bash
进入容器,然后ssh-keygen
然后ssh-copy-id 宿主机信息
完成。 - 上述步骤必须基于配置了容器挂载点,不然重启应用我们的免密信息丢失
更多推荐
已为社区贡献11条内容
所有评论(0)