开发者社区> 问答> 正文

k8s使用yaml创建创建一个pod,报错8080拒绝访问?报错

本人首次学习关于Kubernetes的相关知识,根据Kubernetes的权威指南做了一个关于Kubernetes的一个小测试

相关环境是:

centos7   64位

Kubernetes  1.5.2

docker  1.13.1 

etcd  3.2.22

etcd,Kubernetes,docker安装完毕,之后讲防火墙和selinux都关闭了

防火墙的状态:

[root@localhost kubernetes]# systemctl status  iptables.service 
● iptables.service - IPv4 firewall with iptables
   Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled)
   Active: inactive (dead) since 五 2018-08-10 16:05:50 CST; 32min ago
  Process: 13907 ExecStop=/usr/libexec/iptables/iptables.init stop (code=exited, status=0/SUCCESS)
  Process: 12874 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS)
 Main PID: 12874 (code=exited, status=0/SUCCESS)

8月 10 16:05:50 localhost.localdomain systemd[1]: Stopping IPv4 firewall with iptables...
8月 10 16:05:50 localhost.localdomain iptables.init[13907]: iptables: Setting chains to policy…  ]
8月 10 16:05:50 localhost.localdomain iptables.init[13907]: iptables: Flushing firewall rules:…  ]
8月 10 16:05:50 localhost.localdomain iptables.init[13907]: iptables: Unloading modules: [  确定  ]
8月 10 16:05:50 localhost.localdomain systemd[1]: Stopped IPv4 firewall with iptables.
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
Hint: Some lines were ellipsized, use -l to show in full.

selinux的状态:

[root@localhost kubernetes]# getenforce 
Disabled
 

 

写了关于yaml文件(该文件是摘录书中的)

启动了如下服务:

systemctl start docker

systemctl start kube-apiserver 
 systemctl start kube-controller-manager
 systemctl start kube-scheduler
 systemctl start kubelet
 systemctl start kube-proxy

查看服务:

[root@localhost kubernetes]# ps -ef | grep kube 
kube      14403      1  0 16:29 ?        00:00:00 /usr/bin/kube-controller-manager --logtostderr=true --v=0 --master=http://127.0.0.1:8080
kube      14416      1  1 16:29 ?        00:00:00 /usr/bin/kube-scheduler --logtostderr=true --v=0 --master=http://127.0.0.1:8080
root      14427      1  3 16:29 ?        00:00:00 /usr/bin/kubelet --logtostderr=true --v=0 --api-servers=http://127.0.0.1:8080 --address=127.0.0.1 --hostname-override=127.0.0.1 --allow-privileged=false --pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest
root      14477      1  3 16:29 ?        00:00:00 /usr/bin/kube-proxy --logtostderr=true --v=0 --master=http://127.0.0.1:8080

然后创建pod:

kubectl create -f /root/yaml/mysql-rc.yaml

报错信心如下:

The connection to the server localhost:8080 was refused - did you specify the right host or port?

查看端口8080:

netstat -an  | grep 8080     没有任何信息

  

查看网上相关信息,修改如下两处:

1)说是修改监听的地址,所有修改如下文件:

./apiserver:#KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
./config:#KUBE_MASTER="--master=http://0.0.0.0:8080"
./kubelet:#KUBELET_ADDRESS="--address=0.0.0.0"
./kubelet:#KUBELET_API_SERVER="--api-servers=http://0.0.0.0:8080"

然后重新启动了:

systemctl restart kube-apiserver 
 systemctl restart kube-controller-manager
 systemctl restart kube-scheduler
 systemctl restart kubelet
 systemctl restart kube-proxy

查看服务:

[root@localhost kubernetes]# ps -ef | grep kube 
kube      14403      1  0 16:29 ?        00:00:00 /usr/bin/kube-controller-manager --logtostderr=true --v=0 --master=http://0.0.0.0:8080
kube      14416      1  1 16:29 ?        00:00:00 /usr/bin/kube-scheduler --logtostderr=true --v=0 --master=http://0.0.0.0:8080
root      14427      1  3 16:29 ?        00:00:00 /usr/bin/kubelet --logtostderr=true --v=0 --api-servers=http://0.0.0.0:8080 --address=0.0.0.0 --hostname-override=127.0.0.1 --allow-privileged=false --pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest
root      14477      1  3 16:29 ?        00:00:00 /usr/bin/kube-proxy --logtostderr=true --v=0 --master=http://0.0.0.0:8080
 

查看端口8080:

[root@localhost kubernetes]# netstat -anltp | grep 8080 
[root@localhost kubernetes]# 

为什么服务起来了,端口为什么没有监听呀?

2)修改apiserver文件中的KUBE_ADMISSION_CONTROL将ServiceAccount去掉

# default admission control policies
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

重新启动:

systemctl restart kube-apiserver

 

根据上述修改还是报错:

[root@localhost kubernetes]# kubectl create -f /root/yaml/mysql-rc.yaml 
The connection to the server localhost:8080 was refused - did you specify the right host or port?
 

综上所有问题:

1.为什么没有办法创建pod,为什么说端口被拒绝?

2.服务都起来了为什么端口没有被监听?

 

求大神们帮帮小弟,看看这是哪里出现了问题?谢谢!

 

 

 

 

展开
收起
爱吃鱼的程序员 2020-06-06 15:53:48 1317 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <p>ps -ef|grep kube的结果显示kube-apiserver没创建成功;</p>
    

    所以你后续重新尝试创建rc时的报错(黑体部分)对排查kube-apiserver没创建成功没有任何价值。

    既然kube-apiserver是用系统service部署,那么kube-apiserver的日志就在系统日志中:

    1、可以查看系统日志:vi /var/log/messages[可能有日期后缀-yyyymmdd]

    2、可以用journalctl筛选查看service日志,如journalctl -u kube-apiserver

    所以说仅以以上信息无法确认kube-apiserver退出原因

                            谢谢,您的回复。我已经找到问题造成的原因了。client: etcd cluster is unavailable or misconfigured。关键是etcd没有启动,数据没有存放的位置。将etcd启动之后,kube-apiserver就可以启动了
    
    2020-06-06 15:54:06
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
ACK 云原生弹性方案—云原生时代的加速器 立即下载
ACK集群类型选择最佳实践 立即下载
企业运维之云原生和Kubernetes 实战 立即下载

相关镜像