阅读 269

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/


文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐