文章 94
评论 0
浏览 448859
Vxlan技术

Vxlan技术

一、Vxlan介绍 VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网), RFC7348是由IETF定义的NVO3(Network Virtualization over Layer 3)标准技术之一,(还有NVGRE、STT等技术) 是对传统VLAN协议的一种扩展。VXLAN的特点是将L2的以太帧封装到UDP报文(即L2 over L4)中,并在L3网络中传输。 VXLAN本质上是一种隧道技术,在源网络设备与目的网络设备之间的IP网络上,建立一条逻辑隧道,将用户侧报文经过特定的封装后通过这条隧道转发。从用户的角度来看,接入网络的服务器就像是连接到了一个虚拟的二层交换机的不同端口上,可以方便地进行二层通信。 已经是事实上的网络虚拟化标准,公有云(阿里云、华为云、AWS等)的VPC大多数都是用VXLAN来作为数据转发层面。不止在虚拟化环境,还有园区网络、运营商网络也开始使用。(灵活的二层接入、二层VPN隧道)。 VXLAN已经成为当前构建数据中心的主流技术,是因为它能很好地满足数据中心里虚拟机动态迁移和多租户等需求。 1.1 为什么需....

Centos操作系统网络

Centos操作系统网络

一、基础网络配置 1.1 基本网络配置 将Linux主机接入到网络,需要配置网络相关设置 一般包括如下内容: 主机名 IP/netmask 路由:默认网关 DNS服务器 主DNS服务器 次DNS服务器 第三个DNS服务器 1.2 网络配置文件 1.网络基本配置文件 IP、MASK、GW、DNS相关的配置文件: /etc/sysconfig/network-scripts/ifcfg-IFACE 说明参考: /usr/share/doc/initcripts-*/sysconfig.txt 常用配置 TYPE:接口类型默认为Ethernet NAME:配置名称 DEVICE:此配置文件应用到的设备名称 HWADDR:设备的MAC地址 UUID:设备UUID BOOTPROTO:地址配置协议,dhcp,static,none等 IPADDR:IP地址设置 NETMASK:子网掩码 PREFIX:子网掩码位数,如24 GATEWAY:默认网关 DNS1:DNS服务器 DOMAIN:自动搜索的域名后缀 ONBOOT:在系统启动时自动激活此设备 示例: cat /etc/sys....

网络基础知识

网络基础知识

一、网络基础 1.1 网络概念 计算机网络是一组计算机或网络设备通过有形的线缆或无形的媒介如无线,连接起来,按照一定的规则,进行通信的集合。 网络功能和优点 数据和应用程序 资源 网络存储 备份设备 作用范围分类: 广域网(WAN,Wide Area Network) 城域网(MAN,Metropolitan Area Network) 局域网(LAN,Local Area Network) 1.2 网络标准 1.网络标准和分层 旧模型:专有产品,有一个厂商控制应用程序和嵌入的软件 基于标准的模型:多厂商软件,分层方法 层次划分的必要性 计算机网络是由许多硬件、软件和协议交织起来的复杂系统。由于网络设计十分复杂,如何设计、组织和实现计算机网络是一个挑战,必须要采用科学有效的方法 层次划分的方法 网络的第一层应当具有相对独立的功能 梳理功能之间的关系,使一个功能可以为实现另一个功能提供必要的服务,从而形成系统的层次结构 为提高系统的工作效率,相同或相近的功能仅在一个层次中实现,而尽可能在较高的层次中实现 每一层只为相邻的上一层提高服务 层次划分的优点 各层之间相互独立,每一....

Docker-swarm

Docker-swarm

一、Docker-swarm介绍 docker-swarm是docker官方提供的docker集群模式,如果你有多台docker进行管理可选择这种模式,docker-swarm是内置在docker中的不需要部署其他组件,部署完docker即可正常使用。一个swarm由多个Docker主机组成,这些主机在swarm模式下运行并充当管理节点和node节点。可以同时指定docker节点为管理节点和node节点,创建服务时,可以设置服务的副本数、网络和存储资源。服务可向外部公开端口,swarm会维护服务的状态,如果node节点变成不可用,swarm会调度服务的容器到其他正常的节点。服务与独立容器不同服务可进行修改配置,包括网络和卷无需重新启动服务,swarm会进行滚动更新。当docker在swarm模式下运行时,还是可以使用传统方法进行独立容器的创建。 官方文档:https://docs.docker.com/engine/swarm/ 1.1 Docker-swarm安装 docker swarm不需要任何组件,安装完docker就可以直接使用 1.安装docker-ce #使用任何方式都可....

docker-compose

docker-compose

一、docker-compose 当在宿主机启动较多的容器时候,如果都是手动操作会觉得比较麻烦而且容器出错,这个时候推荐使用docker单机编排工具docker-compose,docker-compose 是 docker 容器的一种单机编排服务,docker-compose 是一个管理多个容器的工具,比如可以解决容器之间的依赖关系,就像启动一个 nginx 前端服务的时候会调用后端的tomcat,那就得先启动tomcat,但是启动tomcat 容器还需要依赖数据库,那就还得先启动数据库,docker-compose 就可以解决这样的嵌套依赖关系,其完全可以替代docker run对容器进行创建、启动和停止。 docker-compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排,docker-compose将所管理的容器分为三层,分别是工程 (project),服务(service)以及容器(container)。 github 地址: https://github.com/docker/compose 以下演示使用docker-compose版本为....

containerd服务

containerd服务

一、Containerd 简介 很久以前,Docker 强势崛起,以“镜像”这个大招席卷全球,对其他容器技术进行致命的降维打击,使其毫无招架之力,就连 Google 也不例外。Google 为了不被拍死在沙滩上,被迫拉下脸面(当然,跪舔是不可能的),希望 Docker 公司和自己联合推进一个开源的容器运行时作为 Docker 的核心依赖,不然就走着瞧。Docker 公司觉得自己的智商被侮辱了,走着瞧就走着瞧,谁怕谁啊! 很明显,Docker 公司的这个决策断送了自己的大好前程,造成了今天的悲剧。 紧接着,Google 联合 Red Hat、IBM 等几位巨佬连哄带骗忽悠 Docker 公司将 libcontainer 捐给中立的社区(OCI,Open Container Intiative),并改名为 runc,不留一点 Docker 公司的痕迹~~ 这还不够,为了彻底扭转 Docker 一家独大的局面,几位大佬又合伙成立了一个基金会叫 CNCF(Cloud Native Computing Fundation),这个名字想必大家都很熟了,我就不详细介绍了。CNCF 的目标很明确,既然....

Docker镜像详解

Docker镜像详解

一、Docker镜像介绍 Docker容器镜像是Docker中的一个重要概念,它是一个轻量级、独立运行的软件包,包含了运行应用所需的一切:代码、运行时环境、系统工具、系统库等。Docker容器镜像是由一个或多个只读的文件系统层组成的,每个文件系统层都包含了一个或多个文件或目录的变更。这种分层的结构使得容器镜像可以高效地共享和复用。Docker容器镜像可以通过Dockerfile文件定义,Dockerfile是一个文本文件,包含了一系列的指令,用于构建容器镜像。通过运行Dockerfile中的指令,Docker可以自动化地构建容器镜像,并将其保存为一个可用的镜像文件。Docker容器镜像可以通过Docker Hub等镜像仓库进行分享和分发。用户可以从镜像仓库中下载所需的镜像,然后在本地运行该镜像创建一个容器实例。总结来说,Docker容器镜像是一个轻量级、独立运行的软件包,包含了运行应用所需的一切。它可以通过Dockerfile文件定义,并可以通过镜像仓库进行分享和分发。 1.1 Docker容器镜像没有内核 从镜像大小上面来说,一个比较小的镜像只有十几MB,而内核文件需要一百多兆, 因....

镜像仓库

镜像仓库

一、Docker Registry Registry是一个无状态的、高度可扩展的服务器端应用程序,它存储并允许您分发Docker映像。Registry是开源的。存储本身委托给驱动程序。默认存储驱动程序是本地posix文件系统,适用于开发或小型部署。还支持其他基于云的存储驱动程序,例如S3、Microsoft Azure、OpenStack Swift 和 Aliyun OSS。由于保护对镜像的访问至关重要,因此Registry原生支持TLS和基本身份验证。 1.1 部署Registry 由于官方提供的registry是一个镜像所以需要事先部署docker。 #拉取镜像 docker pull registry:latest #创建数据目录 mkdir /data/registry -p #启动服务 docker run -it -d -p 5000:5000 -v /data/registry:/var/lib/registry --restart=always --name registry registry:latest #测试 docker tag registry:latest....

Docker服务

Docker服务

一、Docker 简介 1.1 什么是容器技术 1.Docker是什么 首先 Docker是一个在 2013年开源的应用程序并且是一个基于 go 语言编写是一个开源的 PAAS 服务(Platform as a Service,平台即服务的缩写),go 语言是由 google 开发,docker 公司最早叫 dotCloud 后由于 Docker 开源后大受欢迎 就将公司改名为 Docker Inc,总部位于美国加州的旧金山,Docker 是基于 linux内核实现,Docker 最早采用 LXC 技术(LinuX Container 的简写,LXC 是 Linux 原生支持的容器技术,可以提供轻量级的虚拟化,可以说 docker 就是基于 LXC 发展起来的(0.1.5 (2013-04-17),提供 LXC 的高级封装,发展标准的配置方法), 而虚拟化技术 KVM(Kernel-based Virtual Machine) 基于模块实现,Docker 后改为自己研发并开源的 runc 技术运行容器(1.11.0 (2016-04-13)。 Docker now relies on ....

k8s之kustomization

k8s之kustomization

一、kustomization介绍 Kustomize是一个独立的工具,用来通过kustomization文件定制Kubernetes对象。 从1.14 版本开始,kubectl也开始支持使用kustomization文件来管理Kubernetes对象。 要查看包含kustomization文件的目录中的资源,执行下面的命令: #只渲染输出不创建资源 kubectl kustomize <kustomization_directory> 要应用这些资源,使用 --kustomize 或 -k 参数来执行 kubectl apply #渲染并创建资源 kubectl apply -k <kustomization_directory> 二、使用说明 Kustomize是一个用来定制Kubernetes配置的工具。它提供以下功能特性来管理应用配置文件: 从其他来源生成资源 为资源设置贯穿性(Cross-Cutting)字段 组织和定制资源集合 2.1 生成配置文件 1.configMapGenerator configMapGenerator用来生成conf....

kubernetes集群镜像

kubernetes集群镜像

一、kubernetes集群镜像相关内容 kubernetes中每个pod的运行都需要指定相关镜像,kubelet在收到创建pod的命令后会进行拉取相关的镜像,镜像的拉取有相应的拉取策略,如下 1.1 镜像拉取策略 pod中容器的imagePullPolicy和镜像的标签会影响kubelet尝试拉取(下载)指定的镜像。 以下列表包含了 imagePullPolicy 可以设置的值,以及这些值的效果: IfNotPresent 只有当镜像在本地不存在时才会拉取。 Always 每当 kubelet 启动一个容器时,kubelet 会查询容器的镜像仓库, 将名称解析为一个镜像。 如果 kubelet 有一个容器镜像,并且对应的摘要已在本地缓存,kubelet 就会使用其缓存的镜像; 否则,kubelet 就会使用解析后的摘要拉取镜像,并使用该镜像来启动容器。 Never Kubelet 不会尝试获取镜像。如果镜像已经以某种方式存在本地, kubelet 会尝试启动容器;否则,会启动失败。 默认镜像拉取策略 当你(或控制器)向 API 服务器提交一个新的 Pod 时,你的集群....

kubectl备忘录

kubectl备忘录

一、kubectl备忘录 1.1 kubectl的bash自动补全 在bash中设置当前shell的自动补全,需先安装bash-completion包否则会报错 #方法1:临时生效退出重新登录会失效 source <(kubectl completion bash) #方法2:永久生效写入到/etc/profile文件中,这样会导致所有用户都会生效,如果只给一个用户生效请写到~/.bashrc文件中 echo 'source <(kubectl completion bash)' >>/etc/profile 您还可以为 kubectl 使用一个速记别名,该别名也可以与 completion 一起使用 cat ~/.bashrc source <(kubectl completion bash) alias k=kubectl #别名 complete -F __start_kubectl k #设置completion #执行命令如下 k get pod 1.2 kubectl认证文件 kubectl客户端工具与k8s集群通信,需要一个上下文配置文件....

KVM虚拟机批量部署脚本

KVM虚拟机批量部署脚本

KVM虚拟机部署脚本 脚本以及虚拟机模板下载地址:https://pan.baidu.com/s/10AUvrja8PkJu7fKhJmbqNg 提取码:6od7 脚本使用前提 需要自己事先安装kvm,以及配置好桥接网卡 且需要使用virt-customize工具请进行安装,不同发行版本linux安装包不一致请自行查询 在控制节点安装ansible 脚本可实现批量创建centos7.4虚拟机,自行配置网络以及登录密码与主机名称 使用说明: 所有配置文件存放在config目录下只需要修改hosts(主机清单)以及config.yml配置文件 脚本执行kvm.sh即可 创建存储池 ./kvm.sh create-pool 存储池名称 存储池数据存放目录 创建虚拟机 需要提前准备虚拟机模板,且解压到qcow2-files文件夹修改config.yml中image_file配置 修改hosts #要管理的kvm主机 [kvm] 10.202.42.16 10.202.43.247 10.202.43.240 10.202.41.200 #连接信息 [all:vars] ansib....

KVM基础使用

KVM基础使用

一、KVM的部署 1.1 Centos系统 需要提前配置好yum源,如果没有配置配置方式如下: $ cat centos.repo [centos7] name=centos7 baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/ gpgcheck=0 部署KVM工具包 yum install -y qemu-kvm qemu-kvm-tools libvirt libvirt-client virt-manager virt-install 启动服务 systemctl start libvirtd systemctl enable libvirtd 验证是否生成nat网卡virbr0 [13:57:12 root@centos7 ~]#ip a 4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 52:54:00....

Firewalld

Firewalld

一、firewalld Firewalld 是一个Linux防火墙管理器,它用于管理iptables规则和网络连接。它可以动态地管理网络连接,可以在运行时添加和删除规则,支持IPv4和IPv6,可以使用Zones对不同的网络环境进行配置,使得防火墙规则更加灵活和易于管理。Firewalld还支持多种服务和端口,可以通过简单的命令行或图形界面进行配置。 firewalld 提供了一个 daemon 和 service,还有命令行和图形界面配置工具,它仅仅是替代了 iptables service 部分,其底层还是使用 iptables 作为防火墙规则管理入口,firewalld 自身并不具备防火墙的功能,而是和 iptables 一样需要通过内核的 netfilter 来实现,也就是说 firewalld 和 iptables 一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的 netfilter,只不过 firewalld 和 iptables 的结构以及使用方法不一样罢了 1.1 firewalld区域 Firewalld中的区域(Zone)是用于定义网络环境的概念,可以....

ansible之k8s模块

ansible之k8s模块

一、模块安装 这里使用centos7进行说明。 yum install python2-kubernetes python-openshift ansible 验证 ansible-doc k8s 二、模块使用详解 前提:需要在主机安装kubectl命令并且可以正常执行连接集群 2.1 k8s模块 可以用来创建删除k8s中各种资源 注意:模块具有幂等性,如果监测到资源以及存在则不会进行创建,判断依据为是否有这个相同名称的资源。如果资源内容进行修改资源存在不会进行更新。 1.直接创建 - hosts: localhost tasks: - name: create namespace k8s: #使用k8s模块 kubeconfig: /root/.kube/config #k8s连接的认证文件,如果不指定默认值为~/.kube/config name: zhangzhuo #创建资源名称 api_version: v1 #资源的api kind: Namespace #资源类型 state: present #动作创建present,删除absent 2.使用definition....

Windows搭建k8s实验环境

Windows搭建k8s实验环境

一、Workstation的容器环境 依赖项: Workstation Pro 17 Windows 10 1809或更高版本 需要互联网以及科学上网 在新版本的Workstation中官方提供了一个vctl工具可进行容器的启动与管理,与docker功能基本相同,此外vctl还提供了KIND支持,以便KIND可以使用vctl容器作为节点来运行本地Kubernetes 集群。 相关的可执行文件捆绑在Workstation Pro应用程序中,可在C:\Program Files (x86)\VMware\VMware Workstation文件夹中找到这些文件。 以下部分简要说明了vctl命令行实用程序的三个可执行文件 containerd.exe:这是一个在后台运行的运行时守护进程。必须先启动containerd守护进程,然后才能运行任何与容器相关的操作。要启动该守护进程,请使用vctl system start命令,要停止该守护进程,请使用vctl system stop命令。 containerd-shim-crx-v2.exe:启动新容器时,将启动一个新的 container....

OpenKruise插件

OpenKruise插件

一、OpenKruise介绍 OpenKruise是一个基于Kubernetes的扩展套件,他提供的绝大部分能力都是基于CRD扩展来定义,他们不存在任何外部依赖,可以运行在任意纯净的Kubernetes集群中。简单来说OpenKruise对于Kubernetes是一个辅助扩展角色。Kubernetes自身已经提供了一些应用部署管理的功能,比如一些基础工作负载。 但对于大规模应用与集群的场景,这些基础功能是远远不够的。OpenKruise可以被很容易地安装到任意Kubernetes集群中,它弥补了Kubernetes在应用部署、升级、防护、运维等领域的不足。 OpenKruise包含了一系列增强版本的Workloads(工作负载),比如CloneSet、Advanced StatefulSet、Advanced DaemonSet、BroadcastJob等,它们不仅支持类似于 Kubernetes 原生 Workloads 的基础功能,还提供了如原地升级、可配置的扩缩容/发布策略、并发操作等。其中,原地升级是一种升级应用容器镜像甚至环境变量的全新方式,它只会用新的镜像重建 Pod 中....

Coredns

Coredns

一、Coredns简介 官方文档:https://coredns.io/plugins/ CoreDNS是一个DNS服务器,它是用Go编写的。CoreDNS与其他DNS服务器不同,因为它非常灵活几乎所有功能都包含到插件中。 kubernetes中使用coredns提供service资源名称的域名解析,使用kubernetes插件。 当然coredns还有许多的实用插件,官方网站:https://coredns.io/plugins/ 二、Coredns使用 2.1 Coredns配置文件 .:53 { hosts { 10.0.0.1 example.org fallthrough } forward . 114.114.114.114:53 #上面无法处理的请求会传到这里 prometheus loadbalance log } 2.2 插件 1.errors 在查询处理过程中遇到的任何错误都将打印到标准输出。特定类型的错误可以在一段时间内合并和打印一次。 基本语法: errors 2.health 启用进程范围的健康探测接口。当CoreDNS启动并运行时,它会返回200 OK ....

Calico网络策略详解

Calico网络策略详解

一、Calico网络策略介绍 官方文档:https://projectcalico.docs.tigera.io/about/about-network-policy 1.1 什么是kubernetes网络策略 网络策略是保护Kubernetes网络的主要工具。它允许你轻松限制集群中的网络流量,以便只允许您想要流动的流量。 为了理解网络策略的重要性,让我们简单探讨一下网络安全通常是如何在网络策略之前实现的。在企业网络中,网络安全是通过设计网络设备(交换机、路由器、防火墙)的物理拓扑及其相关配置来提供的。物理拓扑定义了网络的安全边界。在虚拟化的第一阶段,相同的网络和网络设备构造在云中被虚拟化,并且用于创建(虚拟)网络设备的特定网络拓扑的相同技术被用于提供网络安全。添加新的应用程序或服务通常需要额外的网络设计来更新网络拓扑和网络设备配置,以提供所需的安全性。 相比之下,Kubernetes 网络模型定义了一个平面网络,其中每个 pod 都可以使用 pod IP 地址与集群中的所有其他 pod 进行通信。这种方法极大地简化了网络设计,并允许在集群中的任何位置动态调度新的工作负载,而不依赖于网....

生而为人