添加node成功,但是在master运行kubectl get nodes 看不到子节点

查看日志
tail /var/logs/message
May 31 17:25:07 node01 kubelet: I0531 17:25:07.790880 21533 docker_service.go:249] Docker Info: &{ID:J66N:IQ7Z:JZXT:D2QX:IHQZ:QGWR:YBFT:QGF3:NPR2:Z7CS:XFDZ:QNNV Containers:1 ContainersRunning:0 ContainersPaused:0 ContainersStopped:1 Images:23 Driver:overlay2 DriverStatus:[[Backing Filesystem xfs] [Supports d_type true] [Native Overlay Diff false]] SystemStatus:[] Plugins:{Volume:[local] Network:[bridge host macvlan null overlay] Authorization:[] Log:[]} MemoryLimit:true SwapLimit:true KernelMemory:true CPUCfsPeriod:true CPUCfsQuota:true CPUShares:true CPUSet:true IPv4Forwarding:true BridgeNfIptables:true BridgeNfIP6tables:true Debug:false NFd:25 OomKillDisable:true NGoroutines:73 SystemTime:2019-05-31T17:25:07.779594558+08:00 LoggingDriver:json-file CgroupDriver:cgroupfs NEventsListener:0 KernelVersion:3.10.0-514.26.2.el7.x86_64 OperatingSystem:CentOS Linux 7 (Core) OSType:linux Architecture:x86_64 IndexServerAddress:https://index.docker.io/v1/ RegistryConfig:0xc420a4b5e0 NCPU:2 MemTotal:1912094720 GenericResources:[] DockerRootDir:/var/lib/docker HTTPProxy: HTTPSProxy: NoProxy: Name:node01 Labels:[] ExperimentalBuild:false ServerVersion:17.03.2-ce ClusterStore: ClusterAdvertise: Runtimes:map[runc:{Path:docker-runc Args:[]}] DefaultRuntime:runc Swarm:{NodeID:zafc8helv94ifxqyfdqccfl08 NodeAddr:192.168.20.112 LocalNodeState:active ControlAvailable:false Error: RemoteManagers:[{NodeID:zmmb1xarmwc0mzc2h4qz03u2d Addr:192.168.20.111:2377}] Nodes:0 Managers:0 Cluster:0xc420251540} LiveRestoreEnabled:false Isolation: InitBinary:docker-init ContainerdCommit:{ID:4ab9917febca54791c5f071a9d1f404867857fcc Expected:4ab9917febca54791c5f071a9d1f404867857fcc} RuncCommit:{ID:54296cf40ad8143b62dbcaa1d90e520a2136ddfe Expected:54296cf40ad8143b62dbcaa1d90e520a2136ddfe} InitCommit:{ID:949e6fa Expected:949e6fa} SecurityOptions:[name=seccomp,profile=default]}
May 31 17:25:07 node01 kubelet: F0531 17:25:07.791088 21533 server.go:233] failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: “systemd” is different from docker cgroup driver: “cgroupfs”
May 31 17:25:07 node01 systemd: kubelet.service: main process exited, code=exited, status=255/n/a
May 31 17:25:07 node01 systemd: Unit kubelet.service entered failed state.

原来是cgroup-driver 没有改导致
修改文件 kubelet 的配置文件/etc/systemd/system/kubelet.service.d/10-kubeadm.conf,将其中的KUBELET_CGROUP_ARGS参数更改成cgroupfs:

Environment=“KUBELET_CGROUP_ARGS=–cgroup-driver=cgroupfs”

systemctl daemon-reload
systemctl restart kubelet

再次查看 ,问题解决
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 18m v1.10.0
node01 Ready 2m v1.10.0
node02 Ready 53s v1.10.0

主要遇到问题的时候查看日志是最好的办法

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes(k8s)是一个用于自动化部署、扩展和管理容器化应用程序的开源平台。在k8s集群中,有一个主节点master node)和多个工作节点(worker node)。主节点负责管理集群中的资源和进行调度决策,而工作节点则负责运行应用程序容器。 在k8s集群中添加多个主节点可以提高集群的可靠性和容错能力。如果某个主节点出现故障,其他主节点可以继续正常工作,确保集群的稳定性和可用性。 下面是详细的步骤和解析,以添加两个主节点为例: 1. 准备环境 确保每个新的主节点都可以访问k8s集群,并且已安装了所需的软件包和依赖项。需要确保主节点上的kubeadm、kubelet、kubectl、容器运行时(如Docker或CRI-O)等软件版本与其他节点相同。 2. 初始化第一个主节点 在集群中选择一个现有的主节点来初始化第一个新主节点。可以使用kubeadm init命令将新主节点纳入集群。 示例命令: ``` $ kubeadm init --control-plane-endpoint=LOAD_BALANCER_DNS_OR_IP --upload-certs ``` 其中,LOAD_BALANCER_DNS_OR_IP是负载均衡器的DNS或IP地址,用于将流量分配到多个主节点。--upload-certs选项将证书上传到新的主节点,以确保其可以加入现有的控制平面。 3. 加入第二个主节点 使用kubeadm join命令将第二个主节点加入集群。要注意的是,需要指定新的主节点的API服务器地址和证书,以便其可以连接到集群。 示例命令: ``` $ kubeadm join LOAD_BALANCER_DNS_OR_IP --token TOKEN --discovery-token-ca-cert-hash SHA256:HASH --control-plane --certificate-key CERTIFICATE_KEY ``` 其中,TOKEN是由第一个主节点生成的加入令牌,HASH是由第一个主节点生成的CA证书哈希值,CERTIFICATE_KEY是第一个主节点生成的证书密钥。 4. 初始化第二个主节点 在第二个主节点上执行与第一个主节点相同的命令,初始化第二个主节点并加入集群。 示例命令: ``` $ kubeadm init --control-plane-endpoint=LOAD_BALANCER_DNS_OR_IP --upload-certs ``` 5. 验证集群状态 使用kubectl命令验证集群状态,确保所有节点都已成功加入集群。可以使用以下命令查看节点状态: ``` $ kubectl get nodes ``` 6. 完成 现在,k8s集群已添加两个主节点,并且可以更好地扩展和管理容器化应用程序。 解析: 添加多个主节点可以提高k8s集群的可靠性和容错能力。多个主节点可以共同管理集群中的资源和进行调度决策,从而确保集群的稳定性和可用性。 在添加新的主节点之前,需要确保每个新的主节点都可以访问k8s集群,并且已安装了所需的软件包和依赖项。需要确保主节点上的kubeadm、kubelet、kubectl、容器运行时(如Docker或CRI-O)等软件版本与其他节点相同。 在添加新的主节点时,需要指定API服务器地址和证书,以便新的主节点可以连接到集群。如果使用负载均衡器将流量分配到多个主节点,需要确保所有主节点的负载均衡器地址相同。 添加多个主节点后,需要使用kubectl命令验证集群状态,确保所有节点都已成功加入集群。可以使用kubectl get nodes命令查看节点状态。 总的来说,添加多个主节点可以提高k8s集群的可靠性和容错能力,使其更适合运行生产环境中的容器化应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值