flannel

k8s集群node节点一直NotReady, 且node节点(并非master)的kubelet报错:Unable to update cni config: No networks found...

馋奶兔 提交于 2020-12-20 07:07:42
###若要转载本文,请务必声明出处: https://www.cnblogs.com/zhongyuanzhao000/p/11401031.html 问题: 集群搭建的过程中,master节点初始化成功,但 node节点加入集群时却一直显示NotReady状态,如下: 使用 kubeclt describe node xxxx 命令,发现报错: KubeletNotReady runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized 进入node节点,执行 systemctl status kubelet 和 journalctl -xeu kubelet 命令,发现报错: Unable to update cni config: No networks found in /etc/cni/net.d 原因: 该错误意思是 CNI插件还未安装,所以状态会是NotReady。 解决: 方法一: ​ 编辑 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf文件(有的是/usr/lib/systemd

k8s节点NotReady问题处理

自作多情 提交于 2020-12-19 02:32:42
我把三台虚拟机重启,发现2个节点一直处于NotReady状态,便去查找问题,到最后是因为子节点的kubelet的状态异常了,restart一下就好了,下面转一下解决的思路 昨天晚上,针对K8S环境做了一次压测,50路并发实施,早上起来看监控,发现昨晚8点之后,系统好像都宕掉了,一看master节点和一个node节点状态变成了not ready,主要定位手段如下: 1. 查看master kubelet状态 systemctl status kubelet 状态正常 2. 查看master kube-proxy状态 systemctl status kube-proxy 状态正常 3. 查看master kube-apiserver状态 systemctl status kube-apiserver 状态正常 4. 查看master kube-scheduler状态 systemctl status kube-scheduler 状态正常 5. 查看master etcd状态 systemctl status etcd 状态正常 6. 查看flannel状态 在kubernetes-dashboard上看到flannel挂掉了,查看日志如下 Failed create pod sandbox: rpc error: code = Unknown desc = failed to

k8s之配置flanneld网络

守給你的承諾、 提交于 2020-12-17 08:07:57
Flannel是Overlay网络的一种,也是将源数据包封装在另一种网络包里面进行路由转发和通信,目前已经支持UDP、VXLAN、AWS VPC和GCE路由等数据转发方式。 Flannel通过给每台宿主机分配一个子网的方式为容器提供虚拟网络,它基于Linux TUN/TAP,使用UDP封装IP包来创建overlay网络,并借助etcd维护网络的分配情况。 去官网下载相应二进制包:https://github.com/coreos/flannel/releases 解压之后得到两个文件:flanneld和mk-docker-opts .sh 将其复制到flanel的专属目录中。这里我们统一放在/opt/kubernetes/bin下面。 通过以下文件来配置flannel的配置文件 cat <<EOF >/opt/kubernetes/cfg/flanneld FLANNEL_OPTIONS="--etcd-endpoints=${ETCD_ENDPOINTS} \ -etcd-cafile=/opt/kubernetes/ssl/ca.pem \ -etcd-certfile=/opt/ kubernetes /ssl/server.pem \ -etcd-keyfile=/opt/ kubernetes /ssl/server-key.pem" EOF 注意: ${ETCD

K8s二进制部署-flanneld报(Couldn‘t fetch network config)

心不动则不痛 提交于 2020-12-17 07:56:15
1、报错提示 将网络配置信息写入了ETCD中,启动flanneld测试时一直报错,具体报错如下: [root@master1 ~]# tail -100f /var/log/messages Dec 15 23:39:22 localhost flanneld: E1215 23:39:22.688405 31176 main.go:382] Couldn't fetch network config: 100: Key not found (/coreos.com) [10] Dec 15 23:39:23 localhost flanneld: timed out Dec 15 23:39:23 localhost flanneld: E1215 23:39:23.701707 31176 main.go:382] Couldn't fetch network config: 100: Key not found (/coreos.com) [10] Dec 15 23:39:24 localhost flanneld: timed out Dec 15 23:39:24 localhost flanneld: E1215 23:39:24.717330 31176 main.go:382] Couldn't fetch network config: 100: Key not

二进制部署kubernetes

做~自己de王妃 提交于 2020-11-30 00:44:42
Kubernetes 二进制安装 环境准备: 主机环境:做好主机名 hosts 文件映射 硬件 2cpu 2G 内存 192.168.30.21 k8s-master 192.168.30.22 k8s-node1 192.168.30.23 k8s-node2 关闭防火墙和 selinux 关闭防火墙: systemctl stop firewalld systemctl disable firewalld Iptables -F 关闭 selinux : $ sed -i 's/enforcing/disabled/' /etc/selinux/config $ setenforce 0 临时 $ setenforce 0 1. 每台机器安装 docker-ce 这里是 Centos7安装方式 安装依赖包 $ sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 添加 Docker软件包源 $ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo 安装 Docker-ce $ sudo yum install docker-ce 启动 Docker $ sudo

kubeadm方式安装kubernetes

Deadly 提交于 2020-11-26 03:37:19
一、kubenetes搭建方式有三种: 1、minikube (通常在测试环境使用,不要在生产环境中使用) 2、kubeadm (是一种快速部署kubernetes的方式,部署相对简单,可以在生产环境中应用) 3、二进制方式安装kubernetes (安装过程复杂,比较容易踩坑) 二、使用kubeadm方式安装kubernetes: 1、环境: IP地址 主机名 192.168.1.100 k8s-master 192.168.1.101 k8s-node1 虚拟机配置:操作系统:CentOS7.5       CPU最好2核心数以上       内存最好2GB以上 2、部署前的条件     2.1、关闭防火墙: 1 systemctl disable firewalld #关闭防火墙开机自启 2 systemctl stop firewalld #关闭防火墙     2.2、关闭selinux 1 setenforce o #暂时关闭selinux      2.3、关闭swap 1 swapoff -a     2.4、创建k8s配置文件 1 vi /etc/sysctl.d/ k8s.conf 2 3 net.bridge.bridge-nf-call-ip6tables = 1 4 net.bridge.bridge-nf-call-iptables = 1 5 net

flannel实战

雨燕双飞 提交于 2020-11-24 03:15:37
docker swarm mode的出现是个里程碑,官方原生的编排调度看起来都成雏形了,但是swarm mode和容器外部系统的对接、网络性能始终不尽人意,swarm mode下各种开源周边不能使用,感觉swarm mode自成一个体系,网络方面上篇调研了calico,本篇调研一下flannel,总体感觉大家都是在向K8S靠拢,docker原生这也是凉凉嘛..... 软件信息 软件 版本 OS Ubuntu 16.04.3 LTS Docker 18.03.0-ce Etcd 3.3.9 Flannel 0.10.0 主机信息 ubuntu16.04-1 172.31.68.241 workload-A docker、etcd、flannel ubuntu16.04-2 172.31.68.242 workload-B docker、flannel ubuntu16.04-3 172.31.68.243 workload-C docker、flannel 工作目录 /opt/programs:各种软件的下载均在该目录下 docker安装 下载 wget 'https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/docker-ce_18.03.0~ce-0~ubuntu_amd64.deb' 安装

腾讯云容器服务 TKE 推出新一代零损耗容器网络

只谈情不闲聊 提交于 2020-11-19 11:52:00
随着容器技术的发展成熟,越来越多的组件迁移到容器, 在技术迁移过程中,数据库,游戏,AI 这些组件对容器网络性能(时延,吞吐,稳定性)提出了更高的要求 。为了得到更优的时延和吞吐表现,各大云厂商都在致力于缩短节点内容器的网络访问链路,让数据包能尽可能快地转发到容器网卡。 腾讯云 容器服务 TKE 借助智能网卡推出下一代容器网络方案,该方案实现了一个 Pod 独占一张弹性网卡,不再经过节点网络协议栈 (default namespace),极大缩短了容器访问链路,缩短了访问时延,并使 PPS 可以达到整机上限。该方案实现了 短链接场景下 QPS 相比之前容器网络方案(策略路由方案,网桥方案)提升 50%-70%;长链接场景下 QPS 提升 40%-60%。 由于不再经过节点网络协议栈,传统基于 iptables 和 IPVS 的 ClusterIP service 访问方案不能直接适用于该方案。为了实现该方案下 Pod 可以直接访问 ClusterIP service,TKE 推出 share-NS IPVS 方案,使得在容器网络命名空间下也可以访问到节点网络协议栈的 IPVS 规则,同时配合 CLB 直通 Pod,实现了完整意义上的弹性网卡直通。 该方案实现了针对 ClusterIP service 短链接场景下 QPS 相比 iptables 方案提升 40%-60%,IPVS

kubernetes二进制部署单master节点

笑着哭i 提交于 2020-11-18 14:38:46
1、安装要求 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 三台机器,操作系统 CentOS7.7(mini) 硬件配置:2GBRAM,2vCPU+,硬盘30GB+ 集群中所有机器之间网络互通,且可访问外网。 采用NAT网络模型(依自己情况而定) 2、安装规划 (1)服务器规划 角色 IP master 192.168.50.128 node0 192.168.50.128 node1 192.168.50.131 node2 192.168.50.132 (2)软件环境 软件 版本 Docker 19.03.12 kubernetes 1.18.6 etcd 3.4.9 (3)软件规划 主机 安装组件 master kube-apiserver,kube-controller-manager,kube-scheduler,etcd node1 kubelet,kube-proxy,etcd node2 kubelet,kube-proxy,etcd 3、初始化系统 3.1、分步骤操作 (1)配置主机名 master节点设置: ~]# hostnamectl set-hostname master node1从节点设置: ~]# hostnamectl set-hostname node1 node2从节点设置: ~]# hostnamectl set

Kubernetes容器网络

坚强是说给别人听的谎言 提交于 2020-11-09 08:51:51
在Kubernetes中要保证容器之间网络互通,网络至关重要。而Kubernetes本身并没有自己实现容器网络,而是通过插件化的方式自由接入进来。在容器网络接入进来需要满足如下基本原则: Pod无论运行在任何节点都可以互相直接通信,而不需要借助NAT地址转换实现。 Node与Pod可以互相通信,在不限制的前提下,Pod可以访问任意网络。 Pod拥有独立的网络栈,Pod看到自己的地址和外部看见的地址应该是一样的,并且同个Pod内所有的容器共享同个网络栈。 容器网络基础 一个Linux容器的网络栈是被隔离在它自己的Network Namespace中,Network Namespace包括了:网卡(Network Interface),回环设备(Lookback Device),路由表(Routing Table)和iptables规则,对于服务进程来讲这些就构建了它发起请求和相应的基本环境。而要实现一个容器网络,离不开以下Linux网络功能: 网络命名空间:将独立的网络协议栈隔离到不同的命令空间中,彼此间无法通信 Veth Pair:Veth设备对的引入是为了实现在不同网络命名空间的通信,总是以两张虚拟网卡(veth peer)的形式成对出现的。并且,从其中一端发出的数据,总是能在另外一端收到 Iptables/Netfilter:Netfilter负责在内核中执行各种挂接的规则