flannel

Kubernetes 的几个重要概念

安稳与你 提交于 2020-03-27 18:32:48
3 月,跳不动了?>>> Cluster Cluster 是计算、存储和网络资源的集合,Kubernetes 利用这些资源运行各种基于容器的应用。 Master Master 是 Cluster 的大脑,它的主要职责是调度,即决定将应用放在哪里运行。Master 运行 Linux 操作系统,可以是物理机或虚拟机。为了实现高可用,可以运行多个 Master。Master 运行着如下 Daemon 服务:kube-apiserver、kube-scheduler、kube-controller-manager、etcd 和 Pod 网络(例如 flannel)。 API Server(kube-apiserver) API Server 提供 HTTP/HTTPS RESTful API,即 Kubernetes API。API Server 是 Kubernetes Cluster 的前端接口,各种客户端工具(CLI 或 UI)以及 Kubernetes 其他组件可以通过它管理 Cluster 的各种资源。 Scheduler(kube-scheduler) Scheduler 负责决定将 Pod 放在哪个 Node 上运行。Scheduler 在调度时会充分考虑 Cluster 的拓扑结构,当前各个节点的负载,以及应用对高可用、性能、数据亲和性的需求。 Controller

从零开始入门 K8s | 理解 CNI 和 CNI 插件

馋奶兔 提交于 2020-03-10 11:27:32
作者 | 溪恒 阿里巴巴高级技术专家 本文整理自《CNCF x Alibaba 云原生技术公开课》第 26 讲, 点击直达课程页面 。 关注“阿里巴巴云原生”公众号,回复关键词**“入门”**,即可下载从零入门 K8s 系列文章 PPT。 导读 :网络架构是 K8s 中较为复杂的方面之一。K8s 网络模型本身对某些特定的网络功能有着一定的要求,因此,业界已经有了不少的网络方案来满足特定的环境和要求。CNI 意为容器网络的 API 接口,为了让用户在容器创建或销毁时都能够更容易地配置容器网络。在本文中,作者将带领大家理解典型网络插件地工作原理、掌握 CNI 插件的使用。 一、CNI 是什么 首先我们介绍一下什么是 CNI,它的全称是 Container Network Interface,即容器网络的 API 接口。 它是 K8s 中标准的一个调用网络实现的接口。Kubelet 通过这个标准的 API 来调用不同的网络插件以实现不同的网络配置方式,实现了这个接口的就是 CNI 插件,它实现了一系列的 CNI API 接口。常见的 CNI 插件包括 Calico、flannel、Terway、Weave Net 以及 Contiv。 二、Kubernetes 中如何使用 CNI K8s 通过 CNI 配置文件来决定使用什么 CNI。 基本的使用方法为: 首先在每个结点上配置 CNI

what role does network bridge `docker0` play in k8s with flannel

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-05 04:15:06
问题 k8s version: v1.10.4 flannel version: v0.10.0 docker version v1.12.6 when i use command brctl show on node,it shows as bellow: [root@node03 tmp]# brctl show bridge name bridge id STP enabled interfaces cni0 8000.0a580af40501 no veth39711246 veth591ea0bf veth5b889fed veth61dfc48a veth6ef58804 veth75f5ef36 vethc162dc8a docker0 8000.0242dfd605c0 no it shows that the vethXXX are binding on network bridge named cni0, but when i use command `ip addr`,it shows : [root@node03 tmp]# ip addr |grep veth

从零开始入门 K8s | Kubernetes 网络概念及策略控制

北城以北 提交于 2020-03-03 12:02:24
作者 | 阿里巴巴高级技术专家 叶磊 一、Kubernetes 基本网络模型 本文来介绍一下 Kubernetes 对网络模型的一些想法。大家知道 Kubernetes 对于网络具体实现方案,没有什么限制,也没有给出特别好的参考案例。Kubernetes 对一个容器网络是否合格做出了限制,也就是 Kubernetes 的容器网络模型。可以把它归结为约法三章和四大目标。 约法三章的意思是:在评价一个容器网络或者设计容器网络的时候,它的准入条件。它需要满足哪三条? 才能认为它是一个合格的网络方案。 四大目标意思是在设计这个网络的拓扑,设计网络的具体功能的实现的时候,要去想清楚,能不能达成连通性等这几大指标。 约法三章 先来看下约法三章: 第一条:任意两个 pod 之间其实是可以直接通信的,无需经过显式地使用 NAT 来接收数据和地址的转换; 第二条:node 与 pod 之间是可以直接通信的,无需使用明显的地址转换; 第三条:pod 看到自己的 IP 跟别人看见它所用的IP是一样的,中间不能经过转换。 后文中会讲一下我个人的理解,为什么 Kubernetes 对容器网络会有一些看起来武断的模型和要求。 四大目标 四大目标其实是在设计一个 K8s 的系统为外部世界提供服务的时候,从网络的角度要想清楚,外部世界如何一步一步连接到容器内部的应用? **外部世界和 service

基于Kubeadm的Flannel分析

我的梦境 提交于 2020-02-28 16:57:10
Flannel概述 Flannel是将多个不同子网(基于主机Node)通过被Flannel维护的Overlay网络拼接成为一张大网来实现互联的,通过官方的一张网络拓扑图我们可以对其基本原理一目了然: 值得探讨的是,flannel的这个overlay网络支持多种后端实现,除上图中的UDP,还有VXLAN和host-gw等。此外,flannel支持通过两种模式来维护隧道端点上FDB的信息,其中一种是通过连接Etcd来实现,另外一种是直接对接K8S,通过K8S添加删除Node来触发更新。 Flannel部署常见问题 1. Node状态显示为“NotReady” 我的K8S环境使用kubeadm来容器化运行K8S的各个组件(除kubelet直接运行在裸机上外),当我使用kubeadm join命令加入新的Minion Node到K8S集群中后,通过kubectl get node会发现所有的node都还是not ready状态,这是因为还没有配置好flannel网络。 2. 使用kube-flannel.yml无法创建DaemonSet 我使用的是K8S的1.6.4的版本,然后按照官方的说明,使用kube-flannel.yml来创建flannel deamon set,结果始终报错。正确的姿势是先使用kube-flannel-rbac

kubeadm部署kubernetes集群1

雨燕双飞 提交于 2020-02-28 12:38:48
​ 一、环境要求 这里使用RHEL7.5 master、etcd:192.168.10.101,主机名:master node1:192.168.10.103,主机名:node1 node2:192.168.10.104,主机名:node2 所有机子能基于主机名通信,编辑每台机子的/etc/hosts文件: 192.168.10.101 master 192.168.10.103 node1 192.168.10.104 node2 所有机子时间要同步 所有机子关闭防火墙和selinux。 master可以免密登录全部机子。 【重要问题】 集群初始化以及节点加入集群的时候都会从谷歌仓库下载镜像,然而,我们并不能访问到谷歌,所以无法下载所需的镜像。而我已经将所需镜像上传至阿里云个人仓库。 二、安装步骤 1、etcd cluster,仅master节点; 2、flannel,集群的所有节点; 3、配置k8s的master:仅master节点; kubernetes-master 启动的服务:kube-apiserver,kube-scheduler,kube-controller-manager 4、配置k8s的各Node节点; kubernetes-node 先设定启动docker服务; 启动的k8s的服务:kube-proxy,kubelet kubeadm 1、master

k8s中使用flannel的host-gw方式下,metrics-server获取数据失败

一笑奈何 提交于 2020-02-27 21:58:58
错误信息如下: error: unable to retrieve the complete list of server APIs: metrics.k8s.io/v1beta1: the server is currently unable to handle the request api-reosurce资源报错 metrics-server日志报错 kube-apiserver日志报错 问题发现 问题发现是metrics-server到kube-apiserver网络不通,开始查看master的网络和网卡,发现master节点在没有pod运行时,cni0网卡不会自动生成。但是路由规则却已经生成。 问题解决 解决网络问题就是在master节点上运行pod,当pod启动以后,master节点就会自动生成cni0网卡 查看api-resource master上日志显示正常 top node命令可以正常使用 总结 该问题比较隐蔽,由于各个节点启动flannel网络均正常,在pod上看不到任何异常现象,但metrics-server却不能正常使用。kube-apiserver的报错的信息也指到kube-apiserver无法连接到metrics-server的网络,因此,我们需要到各个节点上检查一遍才能确定,或者连接到pod里面,检查网络。 来源: oschina 链接:

DevOps专题|玩转Kubernetes网络

南楼画角 提交于 2020-02-27 18:26:13
Kubernetes无疑是当前最火热的容器编排工具,网络是kubernetes中非常重要的一环, 本文主要介绍一些相应的网络原理及术语,以及kubernetes中的网络方案和对比。 Kubernetes本身并不提供网络功能,只是把网络接口开放出来,通过插件的形式实现。为了满足不同的网络功能及需求,使容器在创建或销毁时能够容易地配置容器网络, CNI(Container Network Interface) 应运而生, CNI旨在定义运行时和插件之间的接口,在kubernetes中,CNI连接kubelet和网络插件来为容器配置对应的网络设置。 1 背景 容器网络是容器选择连接到其他容器、主机和外部网络的机制。在kubernetes网络模型设计中,往往需要每个Pod都拥有一个独立的IP地址,而且假定所有的pod都在一个可以直接连通的、扁平的网络空间中。用户不需要额外考虑如何建立Pod之间的连接,也不需要考虑将容器端口映射到主机端口等问题。所有节点都可在不用NAT的方式下同所有容器通讯,容器的地址和别人看到的地址是同一个地址。 2 技术术语 IPAM: IP地址管理;这个IP地址管理并不是容器所特有的,传统的网络比如说DHCP其实也是一种IPAM,到了容器时代我们谈IPAM,主流的两种方法:基于CIDR的IP地址段分配地或者精确为每一个容器分配IP。但总之一旦形成一个容器主机集群之后

Kubernetes' container creation gets stuck at container creation (ContainerCreating) with flannel

雨燕双飞 提交于 2020-02-16 09:53:12
问题 Context I installed Docker following this instruction on my Ubuntu 18.04 LTS (Server) and later on Kubernetes followed via kubeadm . After initializing ( kubeadm init --pod-network-cidr=10.10.10.10/24 ) and joining a second node (I got a two node cluster for the start) I cannot get my coredns as well as the later applied Web UI (Dashboard) to actually go into status Running . As pod network I tried both, Flannel ( kubectl apply -f https://raw.githubusercontent.com/coreos/flannel

Failed create pod sandbox: rpc error: code = Unknown desc = NetworkPlugin cni failed to set up pod network

梦想的初衷 提交于 2020-01-24 10:41:25
问题 Issue Redis POD creation on k8s(v1.10) cluster and POD creation stuck at "ContainerCreating" Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 30m default-scheduler Successfully assigned redis to k8snode02 Normal SuccessfulMountVolume 30m kubelet, k8snode02 MountVolume.SetUp succeeded for volume "default-token-f8tcg" Warning FailedCreatePodSandBox 5m (x1202 over 30m) kubelet, k8snode02 Failed create pod sandbox: rpc error: code = Unknown desc = NetworkPlugin cni