我遇到的问题
问题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
1 | ini复制代码 env: |
因为域名无法解析,无法访问git仓库
报错:
1 | yaml复制代码 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,然后
1 | less复制代码{ |
非插件方式
在/root/.kubectl中配置config文件方式
1 | typescript复制代码{ |
Jenkins部署推荐
Jenkins部署上手,推荐mldong的系列博客,相当赞!
手把手带你玩转k8s-jenkins流水线发布springboot项目
本文转载自: 掘金