首页 > 其他分享 >使用Sealos构建 Calico 镜像

使用Sealos构建 Calico 镜像

时间:2023-05-24 15:32:38浏览次数:41  
标签:amd64 kubernetes yaml Sealos 镜像 buildah Calico cni

Calico 是什么?

Calico是一个用于容器、虚拟机和基于本地主机的工作负载的开源网络和网络安全解决方案。Calico支持广泛的平台,包括Kubernetes、OpenShift、Docker EE、OpenStack和bare metal服务。Calico将灵活的网络功能与随处运行的安全实施相结合,提供了一个具有本地Linux内核性能和真正的云本地可伸缩性的解决方案。 总之,calico是把Host当做Internet中的路由器,使用BGP同步路由,并使用iptables来做安全访问策略,设计出了Calico方案。 可以现实的功能:

  • Calico是一个比较有趣的虚拟网络解决方案,完全利用路由规则实现动态组网,通过BGP协议通告路由。
  • Calico的好处是endpoints组成的网络是单纯的三层网络,报文的流向完全通过路由规则控制,没有overlay等额外开销。
  • Calico的endpoint可以漂移,并且实现了acl。
  • Calico的缺点是路由的数目与容器数目相同,非常容易超过路由器、三层交换、甚至node的处理能力,从而限制了整个网络的扩张。
  • Calico的每个node上会设置大量(海量)的iptables规则、路由,运维、排障难度大。
  • Calico的原理决定了它不可能支持VPC,容器只能从calico设置的网段中获取ip。
  • Calico目前的实现没有流量控制的功能,会出现少数容器抢占node多数带宽的情况。
  • Calico的网络规模受到BGP网络规模的限制。

文件目录结构

. ├── Kubefile ├── cni │ ├── custom-resources.yaml │ └── tigera-operator.yaml ├── images │ └── shim │ └── CalicoImageList └── registry └── docker └── registry

Dockerfile 我们可以将所有内容构建到单个镜像中 (FROM labring/kubernetes),或者我们也可以使用 FROM scratch 指令从零构建应用镜像。

Single image
Application images
FROM labring/kubernetes:v1.24.0
COPY cni ./cni
COPY images ./images
COPY registry ./registry
CMD ["kubectl apply -f cni/tigera-operator.yaml","kubectl apply -f cni/custom-resources.yaml"]

CalicoImageList:Docker 镜像列表文件。 cni:包含 kubectl apply 命令要执行的配置文件。 registry:registry 镜像仓库数据保存目录。 sealos build -t kubernetes-calico:1.24.0-amd64 --platform linux/amd64 --os linux -f Kubefile .:构建 OCI 镜像。 manifests:将 yaml 文件中的镜像解析到 Docker 镜像列表中。

构建 Calico 镜像

目录结构 . ├── Kubefile ├── cni │ ├── custom-resources.yaml │ └── tigera-operator.yaml

Dockerfile All in one Application images 该镜像包含 Kubernetes 和 Calico。

FROM labring/kubernetes:v1.24.0-amd64
COPY cni ./cni
CMD ["kubectl apply -f cni/tigera-operator.yaml","kubectl apply -f cni/custom-resources.yaml"]

cni:包含 kubectl apply 命令要执行的配置文件。 sealos build -t kubernetes-calico:1.24.0-amd64 --platform linux/amd64 -f Kubefile .:构建 OCI 镜像。

构建 OpenEBS 镜像

目录结构 . ├── Kubefile ├── cni │ ├── custom-resources.yaml │ └── tigera-operator.yaml └── manifests └── openebs-operator.yaml

Dockerfile
All in one
Application images
FROM labring/oci-kubernetes-calico:1.24.0-amd64
COPY cni ./cni
COPY manifests ./manifests
CMD ["kubectl apply -f cni/tigera-operator.yaml","kubectl apply -f cni/custom-resources.yaml","kubectl apply -f manifests/openebs-operator.yaml"]

cni : 包含 kubectl apply 命令要执行的配置文件。

sealos build -t labring/kubernetes-calico-openebs:1.24.0-amd64 --platform linux/amd64 -f Kubefile . --构建 OCI 镜像。

建议您需要将 Calico CMD 添加到 OpenEBS CMD 层,因为 Dockerfile 会覆盖旧层。

构建跨平台镜像

下载 x86_64 架构的buildah

wget -qO "buildah" https://github.com/labring/cluster-image/releases/download/depend/buildah.linux.amd64  && \
  chmod a+x buildah && mv buildah /usr/bin

下载 aarch64 构架的buildah

wget -qO "buildah" https://github.com/labring/cluster-image/releases/download/depend/buildah.linux.arm64  && \
  chmod a+x buildah && mv buildah /usr/bin

多架构构建镜像

$ sealos build -t $prefix/oci-kubernetes:$version-amd64 --platform linux/amd64 -f Kubefile  .
$ sealos build -t $prefix/oci-kubernetes:$version-arm64 --platform linux/arm64 -f Kubefile  .

$ buildah login --username $username --password $password $domain
$ buildah push $prefix/oci-kubernetes:$version-amd64
$ buildah push $prefix/oci-kubernetes:$version-arm64
$ buildah manifest create $prefix/oci-kubernetes:$version
$ buildah manifest add $prefix/oci-kubernetes:$version docker://$prefix/oci-kubernetes:$version-amd64
$ buildah manifest add $prefix/oci-kubernetes:$version docker://$prefix/oci-kubernetes:$version-arm64
$ buildah manifest push --all $prefix/oci-kubernetes:$version docker://$prefix/oci-kubernetes:$version

其他

欢迎有问题及时交流~ 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多交流

标签:amd64,kubernetes,yaml,Sealos,镜像,buildah,Calico,cni
From: https://blog.51cto.com/u_15485833/6341340

相关文章

  • 制作一个生产环境可用的PHP基础镜像
    目录引言了解PHP基础镜像需求分析以及镜像选择构建准备最终的Dockerfile引言初学docker一定会觉得Dockerfile很难,其实只是无从下手的缘故。最好的学习方法就是看完每个Dokerfile指令的作用,然后不要急着去搞清楚,直接挑选一个你比较熟悉的服务软件动手自己制作一个。最......
  • Docker 镜像原理(commit、容器数据卷)
    dokcer镜像原理联合文件系统(UnionFS)理解:假设:docker中包含的tomcat和mysql均需要使用linux内核,这里使用的linux内核是共用的。下载时候看到的一层层就是这个,Docker镜像实际是由一层一层的文件系统组成联合文件系统时Docker镜像的基础,镜像通过分层来进行继承特性:......
  • macOS下由yarn与npm差异引发的Electron镜像地址读取问题
    记录macOS下由yarn与npm差异引发的Electron镜像地址读取问题写在前面:该问题仅仅出现在Linux和macOS上,Windows上不存在该问题!初始背景最近笔者重新拾起了Electron,把最新版Electron的官方文档阅读了一遍。众所周知,Electron作为依赖在安装的时候,其二进制文件下载在国内一直以来都......
  • EKS1.26 使用 ECR 存储镜像
    使用eksnodeiam解决ecr相关使用问题权限示例关键字AmazonEC2Container官方托管策略选择合适即可示例:AmazonEC2ContainerRegistryReadOnly{"Version":"2012-10-17","Statement":[{"Effect":"Allow",......
  • Linux安装Ubuntu镜像,常用命令、IP配置等
    Ubuntu1.系统安装ubuntu安装步骤:部分版本分辨率问题显示不全,可以先试用,点击右上角修改分辨率,再安装2.登录ubuntu只能登录创建系统的用户为root修改密码:sudopasswdroot切换root用户:1.sudo-i-uroot2.sudosu3.配置IP安装后尝试pingwww.baidu.com(安装后自动获......
  • 当k8s拉镜像出现问题时 需要修改 /etc/containerd/config.toml 配置
    找到plugins."io.containerd.grpc.v1.cri".registry添加此两处配置 [plugins."io.containerd.grpc.v1.cri".registry.configs][plugins."io.containerd.grpc.v1.cri".registry.configs."192.168.16.185:8088".tls]insecu......
  • Dockerfile练习二---------------------------构建自己的mysql镜像
    构建自己的mysql镜像 ##NYSQL的shell安装脚本##[root@dockertomcat]#cd~[root@docker~]#mkdirmysql[root@docker~]#cdmysql/[root@dockermysql]#vimrun.sh#!/bin/bashyum-yinstall\ncurses\ncurses-devel\bison\cmake\make\gcc\gcc-c++cd/optcdmysql-5......
  • docker生成nginx镜像
    dockerrun-d-p80:80\-p8088:8088\-v/home/xxx/xxx/xxx/conf/nginx.conf:/etc/nginx/nginx.conf\-v/home/xxx/xxx/xxx/dist:/home/usc/dist\--namenginx\nginx:latest#-p指定端口-v挂载目录--name指定容器的名称nginx:latest指定镜像的版......
  • Dockefile构建镜像语法:
    1.构建nginx镜像#BaseimageFROMcentos:7#MAINTAINERMAINTAINERcbmiao<[email protected]>#将nginx以及pcre源代码加入镜像ADDnginx-1.20.1.tar.gz/usr/local/src/ADDpcre-8.45.tar.gz/usr/local/src/#安装编译器RUNyuminstall-ygccgcc-c++makeopens......
  • 使用国内镜像通过pip安装python 包
    pip安装python包时超时或是报错“CannotfetchindexbaseURLhttp://e.pypi.python.org/simple/”解决方法:加上参数"-i http://pypi.v2ex.com/simple",即换成国内镜像。一劳永逸的办法:~/.pip/下创建文件pip.conf(如果还没有的话),并填入以下内容:1[global]2timeout=6......