一、镜像拉取代理 由于国内防护墙原因,无法从以下仓库进行镜像拉取 docker.io:docker官方仓库 ghcr.io:GitHub官方仓库 gcr.io:谷歌官方仓库 k8s.gcr.io/registry.k8s.io:k8s官方谷歌仓库 quay.io:红帽官方仓库 mcr.microsoft.com:微软官方仓库 如需要拉取以上仓库镜像需要通过特殊的方法进行拉取一般有如下几种方式 使用公有云申请国外区域服务器进行镜像拉取之后load到本地或推送到自己的仓库(推荐阿里云仓库免费版有300配额个数) 使用VPN工具,在本地使用虚拟机安装docker配置代理可直接使用docker pull命令拉取 购买国外服务器自行部署镜像代理服务,使用代理服务拉取 使用国内其他厂商的代理服务拉取 二、代理服务crproxy 官方文档:https://github.com/DaoCloud/crproxy/releases 需要有一台国外服务器并且可以访问互联网,且有一个公网IP,最大的好处是别人也是可以使用的。 2.1 单人使用简单部署 #下载二进制文件包 wget https://g....
Ansible剧本详解
一、Playbook基础知识 1.1 playbook介绍 playbook 剧本是由一个或多个"play"组成的列表 play的主要功能在于将预定义的一组主机,装扮成事先通过ansible中的task定义好的角色。Task 实际是调用ansible的一个module,将多个play组织在一个playbook中,即可以让它们联合起来,按事先编排的机制执行预定义的动作 Playbook 文件是采用YAML语言编写的 官方文档:https://docs.ansible.com/ansible/latest/playbook_guide/index.html 1.关键字 playbook中有一些关键字,在配置文件中的配置选项也有相同含义的配置参数,他们是存在优先级的,具体如下 变量 playbook关键字 命令行选项 配置设置 1.2 playbook语法 playbook的配置文件为YAML格式。 - name: ping hosts: localhost tasks: - name: ping ping: - name: file hosts: - demo1 - demo2 ....
Ansible基础
一、ansible介绍 官方文档:https://docs.ansible.com/ Ansible是一个开源的自动化运维工具,基本可以实现自动化所有任务,他提供了丰富的模块以支持各种服务以及应用,他的特点如下: 无代理架构。 简单,通过YAML语法进行编写。 灵活性与扩展性。 幂等性和可预测性,当系统处于你的playbook描述状态时,ansible不会执行任何动作。 通常情况下ansible都用来管理Linux主机,他通过ssh连接其他主机进行操作。连接信息一般存放在主机清单配置文件中。 安装方法不介绍请查看官方文档:https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html 1.1 ansible配置 1.配置文件说明 默认情况下ansible通过ansible.cfg进行设置,正常情况下来说默认配置即可符合正常使用。在使用包方式安装时配置文件存放在/etc/ansible/ansible.cfg,其他方式安装时,可能并不会生成配置文件,所以需要自己进行配置初始化。 配置....
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操作系统网络
一、基础网络配置 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官方提供的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单机编排工具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 简介 很久以前,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容器镜像可以通过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 简介 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
一、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中每个pod的运行都需要指定相关镜像,kubelet在收到创建pod的命令后会进行拉取相关的镜像,镜像的拉取有相应的拉取策略,如下 1.1 镜像拉取策略 pod中容器的imagePullPolicy和镜像的标签会影响kubelet尝试拉取(下载)指定的镜像。 以下列表包含了 imagePullPolicy 可以设置的值,以及这些值的效果: IfNotPresent 只有当镜像在本地不存在时才会拉取。 Always 每当 kubelet 启动一个容器时,kubelet 会查询容器的镜像仓库, 将名称解析为一个镜像。 如果 kubelet 有一个容器镜像,并且对应的摘要已在本地缓存,kubelet 就会使用其缓存的镜像; 否则,kubelet 就会使用解析后的摘要拉取镜像,并使用该镜像来启动容器。 Never Kubelet 不会尝试获取镜像。如果镜像已经以某种方式存在本地, kubelet 会尝试启动容器;否则,会启动失败。 默认镜像拉取策略 当你(或控制器)向 API 服务器提交一个新的 Pod 时,你的集群....
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的部署 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 是一个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)是用于定义网络环境的概念,可以....
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是一个基于Kubernetes的扩展套件,他提供的绝大部分能力都是基于CRD扩展来定义,他们不存在任何外部依赖,可以运行在任意纯净的Kubernetes集群中。简单来说OpenKruise对于Kubernetes是一个辅助扩展角色。Kubernetes自身已经提供了一些应用部署管理的功能,比如一些基础工作负载。 但对于大规模应用与集群的场景,这些基础功能是远远不够的。OpenKruise可以被很容易地安装到任意Kubernetes集群中,它弥补了Kubernetes在应用部署、升级、防护、运维等领域的不足。 OpenKruise包含了一系列增强版本的Workloads(工作负载),比如CloneSet、Advanced StatefulSet、Advanced DaemonSet、BroadcastJob等,它们不仅支持类似于 Kubernetes 原生 Workloads 的基础功能,还提供了如原地升级、可配置的扩缩容/发布策略、并发操作等。其中,原地升级是一种升级应用容器镜像甚至环境变量的全新方式,它只会用新的镜像重建 Pod 中....
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 ....