k8s集群创建devops项目一直等待状态,没有发现host

问题分析:

kubesphere在帮我们自动化创建一些智能自动化的额时候难免会发生一些小错误,devops-jenkins是一个部署也会生成一个容器组即pod,容器组的容器服务端口是 targetPort,容器组对外暴露的端口是port,拿devops-controller-5f5896c6ff-kjqdk控制器举例子,当创建devops项目时首先会访问该控制器,就是它一直报没有host问题,验证进入jenkins容器内部访问它的8080端口完全没有问题,现在部署已经解决了,服务之间的访问显然是有问题的,不同pod之间的访问是服务名加空间名的形式,kubesphere生成的服务为devops-jenkins-agent代理所以将服务的name改为devops-jenkins,并把内部容器端口指定为8080容器组暴露的端口port为80,这样创建devops的访问地址无需加端口,从devops-controlle报错中也可以看到,如下

Get "http://devops-jenkins.kubesphere-devops-system/crumbIssuer/api/json/api/json": dial tcp: lookup devops-jenkins.kubesphere-devops-system on 169.254.25.10:53: no such host, requeuing。

距离说明,传统的部署方式如下

1、部署一个 tomcat kubectl create deployment tomcat6 --image=tomcat:6.0.53-jre8

通过Kubectl get pods -o wide 可以获取到 tomcat

2、暴露 tomcat 访问 kubectl expose deployment tomcat6 --port=80 --target-port=8080 --type=NodePort

Pod 的 80 映射容器的 8080;service 会代理 Pod 的 80

3、动态扩容测试 kubectl get deployment 应用升级 kubectl set image (--help 查看帮助) 扩容: kubectl scale --replicas=3 deployment tomcat6 扩容了多份,所有无论访问哪个 node 的指定端口,都可以访问到 tomcat6

4、以上操作加--run-dry -o yaml获取 yaml 格式的配置 参照 k8s 细节

5、删除 Kubectl get all kubectl delete deploy/nginx kubectl delete service/nginx-service 流程;创建 deployment 会管理 replicas,replicas 控制 pod 数量,有 pod 故障会自动拉起 新的 pod

在上面创建一个部署后第二部暴露服务时一定是已经存在的部署名字,所以只需要将服务名改为部署名字该pod组就能访问生效。

相关推荐
做个文艺程序员1 小时前
Linux第22篇:用Docker容器化你的Java SaaS应用:一次构建,随处运行
java·docker·容器
小的博客3 小时前
windows下安装Docker Desptop
运维·docker·容器
Zhu7584 小时前
在k8s环境部署Apache zookeeper3.9.5,高可用,多pod
容器·kubernetes·apache
雨声不在5 小时前
macos 12使用docker
macos·docker·容器
运维大师5 小时前
【K8S 运维实战】07-Pod生命周期与故障排查
运维·容器·kubernetes
BullSmall20 小时前
Anolis OS 8.10 完整安装 Docker CE(生产可用,解决 podman 冲突)
docker·容器·podman
heimeiyingwang21 小时前
【架构实战】可观测性三支柱:日志、指标、链路的融合
elasticsearch·架构·kubernetes
至乐活着1 天前
Ansible自动化运维实战:从零部署高可用Nginx+静态网站集群
ansible·自动化运维·devops·playbook·配置管理
CodexDave1 天前
数据库连接池耗尽:排查顺序与三层兜底
服务器·前端·数据库·git·云原生·容器·kubernetes
java_logo1 天前
ELK Docker Compose 部署指南:轻松搭建日志检索平台
elk·elasticsearch·docker·容器·kibana·logstash·轩辕镜像