Calico

K8S从入门到放弃系列-(12)Kubernetes集群Coredns部署

江枫思渺然 提交于 2020-12-16 20:11:39
摘要:   集群其他组件全部完成后我们应当部署集群 DNS 使 service 等能够正常解析,1.11版本coredns已经取代kube-dns成为集群默认dns。 1)下载yaml配置清单 [root@k8s-master01 ~]# mkdir /opt/k8s/ coredns [root@k8s -master01 ~]# cd /opt/k8s/coredns/ [root@k8s -master01 coredns]# wget https: // raw.githubusercontent.com/coredns/deployment/master/kubernetes/coredns.yaml.sed [root@k8s-master01 coredns]# mv coredns.yaml. sed coredns.yaml 2)修改默认配置清单文件 [root@k8s-master01 ~]# vim /opt/k8s/coredns/coredns.yaml # 第一处修改 apiVersion: v1 kind: ConfigMap metadata: name: coredns namespace: kube - system data: Corefile: | .: 53 { errors health ready kubernetes cluster

Kubernetes 集群搭建 v1.19.3

好久不见. 提交于 2020-12-14 10:06:05
Kubernetes 集群搭建 v1.19.3 准备开始 硬件准备 高能预警 博主的虚拟机配置 修改 Linux系统 环境配置 安装依赖和工具 安装容器运行时 ——Docker 安装 kubelet / kubeadm / kubectl 安装 Calico 网络组件 准备开始 硬件准备 一台或多台运行着下列系统的机器: Ubuntu 16.04+ / Debian 9+ / CentOS 7 / Red Hat Enterprise Linux (RHEL) 7 / Fedora 25+ / HypriotOS v1.0.1+ / Container Linux (测试 1800.6.0 版本) 每台机器的内存在 2 GB 以上,CPU 2核以上 集群中的所有机器的网络彼此均能相互连接(公网和内网都可以) 节点之中不可以有重复的主机名、MAC 地址或 product_uuid 高能预警 本文多数命令需要在所有节点上执行,所以部分只需要在某些节点上运行的会有提示,请各位读者仔细阅读后食用~ 博主的虚拟机配置 CPU Memory Disk Intel® Xeon® CPU E5-2650 @ 2.00GHz(4 核心数) 4 GB 20 GB hostname IP master 10.10.102.91 node01 10.10.102.92 node02 10.10.102

腾讯云容器服务 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容器网络

坚强是说给别人听的谎言 提交于 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负责在内核中执行各种挂接的规则

kubernetes实战(二十五):kubeadm 安装 高可用 k8s v1.13.x

谁说我不能喝 提交于 2020-10-28 15:01:24
1、系统环境   使用kubeadm安装高可用k8s v.13.x较为简单,相比以往的版本省去了很多步骤。   kubeadm安装高可用k8s v.11 和 v1.12 点我   主机信息 主机名 IP地址 说明 组件 k8s-master01 ~ 03 192.168.20.20 ~ 22 master节点 * 3 keepalived、nginx、etcd、kubelet、kube-apiserver k8s-master-lb 192.168.20.10 keepalived虚拟IP 无 k8s-node01 ~ 08 192.168.20.30 ~ 37 worker节点 * 8 kubelet   主机配置 [root@k8s -master01 ~]# hostname k8s - master01 [root@k8s -master01 ~]# free - g total used free shared buff/ cache available Mem: 3 1 0 0 2 2 Swap: 0 0 0 [root@k8s -master01 ~]# cat /proc/cpuinfo | grep process processor : 0 processor : 1 processor : 2 processor : 3 [root@k8s -master01

Kubernetes集群部署有状态主从容器mysql5.7集群

那年仲夏 提交于 2020-10-23 11:23:05
0 前言 本文主要的工作是解决容器集群的有状态化的问题以及进行验证相关技术。 1 相关环境 名称 版本 Kubernetes v1.18.6 RKE 1.1.4 网络插件 calico 2.拓扑图 3.创建测试ns apiVersion: v1 kind: Namespace metadata: name: mysql labels: app: mysql 4.创建Storgeclass apiVersion: v1 kind: PersistentVolume metadata: name: example-mysql-pv spec: capacity: storage: 3Gi volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Delete storageClassName: local-storage local: path: /data/mysql/ nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - node(name) #此处务必是节点名称,也就是kubectl get

趣谈网络协议!华为18级技术大牛呕心沥血终成545页神仙文档!

試著忘記壹切 提交于 2020-10-01 12:07:32
网络是用物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的。通信是人与人之间通过某种媒体进行的信息交流与传递。网络通信是通过网络将各个孤立的设备进行连接,通过信息交换实现人与人,人与计算机,计算机与计算机之间的通信。 网络通信中最重要的就是网络通信协议。当今网络协议有很多,局域网中最常用的有三个网络协议:MICROSOFT的NETBEUI、NOVELL的IPX/SPX和TCP/IP协议。应根据需要来选择合适的网络协议。 第一,会从身边经常见到的事情出发,用讲故事的方式来讲解各种协议,然后慢慢扩大到不熟悉的领域。例如,每个人都会使用查看I地址的命令,我们就从这个命令开始,展开讲解一些相关概念。每个人都在大学宿舍组过简单的网络来打游戏,我们就从宿舍网络涉及的最简单的网络概念开始讲,然后说到办公室网络,再说到日常常用的与上网、购物、视频下载等活动相关的网络协议,最后才说到最陌生的数据中心。说到这里的时候,很多概念已经在前面的“宿舍”和“办公室”的例子中都出现过,因此更容易接受和理解。 第二,讲解网络协议时会更加贴近使用场景,将各个层次的关系串连起来,而非孤立地讲解某个概念。 常见的计算机网络课程往往会按照网络分层,一层一层地讲,却很少讲层与层之间的关系。例如,我们在学习路由协议的时候,在真实场景中,这么多的算法和二层是什么关系呢?和四层又是什么关系呢

Calico网络架构

狂风中的少年 提交于 2020-09-30 00:48:27
Calico 是一种容器之间互通的网络方案。在虚拟化平台中,比如 OpenStack、Docker 等都需要实现 workloads 之间互连,但同时也需要对容器做隔离控制,就像在 Internet 中的服务仅开放80端口、公有云的多租户一样,提供隔离和管控机制。而在多数的虚拟化平台实现中,通常都使用二层隔离技术来实现容器的网络,这些二层的技术有一些弊端,比如需要依赖 VLAN、bridge 和隧道等技术,其中 bridge 带来了复杂性,vlan 隔离和 tunnel 隧道则消耗更多的资源并对物理环境有要求,随着网络规模的增大,整体会变得越加复杂。我们尝试把 Host 当作 Internet 中的路由器,同样使用 BGP 同步路由,并使用 iptables 来做安全访问策略,最终设计出了 Calico 方案。 适用场景:k8s环境中的pod之间需要隔离 设计思想:Calico 不使用隧道或 NAT 来实现转发,而是巧妙的把所有二三层流量转换成三层流量,并通过 host 上路由配置完成跨 Host 转发。 架构图: Calico网络模型主要工作组件: 1.Felix:运行在每一台 Host 的 agent 进程,主要负责网络接口管理和监听、路由、ARP 管理、ACL 管理和同步、状态上报等。 2.etcd:分布式键值存储,主要负责网络元数据一致性,确保Calico网络状态的准确性

Calico网络架构

China☆狼群 提交于 2020-09-29 21:52:43
Calico 是一种容器之间互通的网络方案。在虚拟化平台中,比如 OpenStack、Docker 等都需要实现 workloads 之间互连,但同时也需要对容器做隔离控制,就像在 Internet 中的服务仅开放80端口、公有云的多租户一样,提供隔离和管控机制。而在多数的虚拟化平台实现中,通常都使用二层隔离技术来实现容器的网络,这些二层的技术有一些弊端,比如需要依赖 VLAN、bridge 和隧道等技术,其中 bridge 带来了复杂性,vlan 隔离和 tunnel 隧道则消耗更多的资源并对物理环境有要求,随着网络规模的增大,整体会变得越加复杂。我们尝试把 Host 当作 Internet 中的路由器,同样使用 BGP 同步路由,并使用 iptables 来做安全访问策略,最终设计出了 Calico 方案。 适用场景:k8s环境中的pod之间需要隔离 设计思想:Calico 不使用隧道或 NAT 来实现转发,而是巧妙的把所有二三层流量转换成三层流量,并通过 host 上路由配置完成跨 Host 转发。 架构图: Calico网络模型主要工作组件: 1.Felix:运行在每一台 Host 的 agent 进程,主要负责网络接口管理和监听、路由、ARP 管理、ACL 管理和同步、状态上报等。 2.etcd:分布式键值存储,主要负责网络元数据一致性,确保Calico网络状态的准确性

kubernetes快速入门13-网络

ⅰ亾dé卋堺 提交于 2020-09-29 13:48:28
kubernetes快速入门13-网络 在kubernetes中容器有四种网络模型: bridge,桥接式网络,自由式网络名称空间 joined,共享使用另外容器的网络空间 opened,容器直接共享宿主机的网络名称空间 Closed或None,不使用任何网络空间 docker网络存在的问题:跨越节点间容器访问时要经过各自宿主机的网络并做SNAT和DNATl转换,发起方容器访问目标容器是访问目标容器所在宿主机的网络,通过DNAT转换才能访问到目标容器,目标容器看不到发起方容器的IP地址,而发起方也看不到目标容器的IP地址。通过SNAT和DNAT转换进行通信效率低。 k8s的网络通信: 容器间通信: 同一个pod内的多个容器间的通信,直接使用lo回环地址 pod间通信:直接使用Pod的网络IP地址通信 Pod与Service通信: Pod的IP与ClusterIP进行通信 Service与集群外部的通信:外部的LB,ingress, NodePort k8s自己不提供网络解决方案,它支持CNI(容器网络插件,这只是一种规范)网络插件方式引入网络解决方案,常见有flannel,calico,canal等,canal是flannel和calico的结合产物,在flannel的基础上增加的网络策略的实现。 flannel网络 flannel支持多种报文的承载方式: VxLAN