jenkins部署及问题解决(jenkins节点配置启动方式)
我遇到的问题
问题1
linux主机上kubectl 访问腾讯云集群没有问题, linux主机上安装的jenkins启动的一个docker容器上用kubectl访问就报连接超时
ping只能ping通IP,在docker容器中可以带IP去ping,是因为容器帮忙直接把端口去掉了。
在linux主机上ping 域名(不要带https:),可以看到经过dns解析的内网IP地址 10.132.18.116 ping cls-igajfhjz.ccs.tencent-cloud.com PING cls-igajfhjz.ccs.tencent-cloud.com (10.132.18.116) 56(84) bytes of data. 64 bytes from cls-igajfhjz.ccs.tencent-cloud.com (10.132.18.116): icmp_seq=1 ttl=54 time=7.03 ms
docker容器中通过域名解析到的大网地址,在linux主机上也是访问不通的 nc -vz 81.69.157.133 443, ip可以ping通
直接在容器中配置k8s集群的内网地址 https://10.132.18.116 后问题解决
K8S集群的默认端口是6443,但是腾讯云的不是啊,太坑了。
问题2
用dockerhub里的jenkins:lts镜像安装jenkins到k8s集群,登录后任何请求都报错"jenkins 403 No valid crumb was included in the request"
参考:www.codenong.com/cs109265932…
启动参数中添加 Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
env: - name: JAVA_OPTS value: -XshowSettings:vm -Dhudson.slaves.NodeProvisioner.initialDelay=0 -Dhudson.slaves.NodeProvisioner.MARGIN=50 -Dhudson.slaves.NodeProvisioner.MARGIN0=0.85 -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true -Duser.timezone=Asia/Shanghai 复制代码
因为域名无法解析,无法访问git仓库
报错:
Could not resolve host: git.XXXXXX.com复制代码
集群dnsPolicy配置和场景说明
找到如下资料:help.aliyun.com/document_de…ACK支持通过dnsPolicy字段为每个Pod配置不同的DNS策略。目前ACK集群支持四种策略:
ClusterFirst:通过CoreDNS来做域名解析,Pod内/etc/resolv.conf配置的DNS服务地址是集群DNS服务的kube-dns地址。该策略是集群工作负载的默认策略。
None:忽略集群DNS策略,需要您提供dnsConfig字段来指定DNS配置信息。
Default:Pod直接继承集群节点的域名解析配置。即在ACK集群直接使用ECS的/etc/resolv.conf文件(文件内配置的是阿里云DNS服务)。
ClusterFirstWithHostNet:强制在hostNetWork网络模式下使用ClusterFirst策略(默认使用Default策略)。
jenkins属于第三种情况,yaml直接配置dnsPolicy: Default就OK了
Jenkins配置访问K8S集群的两种方式
插件方式
Jenkins下载插件 Kubernete CLI,然后
{ agent any parameters { string(name: 'k8sCredentialsId', defaultValue: 'XXXXXX', description: 'k8s集群配置id') string(name: 'k8sServerUrl', defaultValue: 'XXXXXX', description: 'k8s集群服务地址') } stages { stage('检出代码') { steps{ withKubeConfig([credentialsId: "${params.k8sCredentialsId}",serverUrl: "${params.k8sServerUrl}"]) { } } } } }复制代码
非插件方式
在/root/.kubectl中配置config文件方式
{ agent any environment { K8S_CONFIG = credentials('XXXXXX') } stages { stage('检出代码') { steps{ sh "mkdir -p /root/.kube" sh "echo ${K8S_CONFIG} | base64 -d > /root/.kube/config" sh "kubectl config --kubeconfig=/root/.kube/config get-contexts" sh "kubectl config --kubeconfig=/root/.kube/config use-context cls-igajfhjz-100021810018-context-default" } } } } }复制代码
Jenkins部署推荐
作者:NativeSailor
链接:https://juejin.cn/post/7035396259007430663
伪原创工具 SEO网站优化 https://www.237it.com/