热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从Docker到Kubernetes

从Docker到Kubernetes2013年,随着PaaS发展壮大,这个领域的从业者们发现了PaaS中最为棘手也最亟待解决的一个问题:究竟如何给应用打包?无论是CloudFoun

从Docker到Kubernetes

2013 年,随着PaaS发展壮大,这个领域的从业者们发现了 PaaS 中最为棘手也最亟待解决的一个问题:究竟如何给应用打包?无论是 Cloud Foundry、OpenShift,还是 Clodify,面对这个问题都没能给出一个完美的答案。一个并不引人瞩目的 PaaS 创业公司 dotCloud,却选择了开源自家的一个容器项目 Docker,正好提供了一种非常便利的打包机制,然后就一发不可收拾,围绕着 Docker 项目进行集成与创新涌现出来,包括Mesosphere公司的Mesos项目等等,Docker 公司也顺势推出了Docker Compose、Swarm 和 Machine“三件套”,docker生态圈很快发展起来了,开启了一个新的容器时代。

2014年6月,谷歌公司正式宣告了Kubernetes项目的诞生。

这个时候容器出现多样化,包括google公司lmctfy容器,coreos的rkt容器。Google公司提出和Docker合作,与Docker公司共同推进一个中立的容器运行时库作为Docker项目的核心依赖。此时Docker并不担心,因为它维护的 Docker 社区也足够庞大,Docker项目已是容器生态的标准。于是,2015 年 6 月 22 日,由 Docker 公司牵头,CoreOS、Google、RedHat 等公司共同宣布,Docker 公司将 Libcontainer 捐出,并改名为 RunC 项目,交由一个完全中立的基金会管理,然后以 RunC 为依据,大家共同制定一套容器和镜像的标准和规范,这就是OCI。

明显OCI的成立容器玩家们出于自身利益进行干涉的一个妥协结果,所以尽管Docker 是 OCI 的发起者和创始成员,但并没有很积极的去推动,Docker注重是它商业价值。 2015年12月11日,Google、RedHat 等开源基础设施领域玩家们,共同牵头发起了一个名为 CNCF(Cloud Native Computing Foundation)的基金,主要是以kubernetes项目为基础打造一个平台级生态。由于Kubernates项目焕然一新的设计理念和号召力,2016年以后kubernates社区得到了空前的发展。

2016年6月,Docker v.1.12发布,直接内置Docker Swarm(多主机多容器的编排解决方案) 2016年12月, Kubernetes 发布 CRI (Container Runtime Interface, 容器运行时接口) 2017年,Docker 分拆了 Containerd,支持CNI,将这个组件分解为一个单独的项目,使得 Docker 将容器的管理功能移出 Docker 引擎,并移入一个单独的守护进程中,即 Containerd,并将其捐赠给了CNCF社区。同时Docker公司宣布将Docker项目改名为Moby,交给社区自行维护。 2017年10月,Docker公司将自己的主打产品Docker EE 内置Kubernetes项目,预示着Kubernetes的胜出,成为容器编排的标准。

2017年11月 ,K8s支持containerd 2018年 k8s集成containerd,正式GA,把CRI plugin嵌入 containerd中 2019年 rkt 终止使命被CNCF归档 2019 年 Mirantis 收购 Docker 的企业服务 OCI 代表 开放容器标准 , 它标准化了容器工具和底层实现(technologies)之间的大量接口。 他们维护了打包容器镜像(OCI image-spec)和运行容器(OCI runtime-spec)的标准规范。 他们还以 runc 的形式维护了一个 runtime-spec 的真实实现, 这也是 containerd 和 CRI-O 依赖的默认运行时。

CRI 建立在这些底层规范之上,为管理容器提供端到端的标准 全称Container Runtime Interface,(容器运行时接口)是一个用来扩展容器运行时的接口,能让 kubelet 无需重新编译就可以广泛使用各种容器运行时的插件接口。CRI 由 protocol buffers 和 gRPC API 还有 streaming 库 构成。用户不需要关心内部通信逻辑,而只需要实现定义的接口就可以,包括 RuntimeService 和 ImageService。 其实准确来讲,Docker和容器不是一回事,但Docker普及了Linux容器这种技术模式,并在开发底层技术方面发挥了重要作用。

容器的生态相比于单纯的 Docker,已经进化到了一个更宽广的领域 2020年 Kubernates 宣布移除dockershim,现在1.20版本以后,能使用但是kubelet会打印警告日志。最新消息dockershim 计划在 Kubernetes 1.24 版被移除, 请参阅 移除 Kubernetes 增强方案 Dockershim 主流的容器运行时有 containerd,docker engine,cri-o,Mirantis Container Runtime(商业版) Containerd是一个工业标准的容器运行时,它强调简单性、健壮性和可移植性。它可以在宿主机中管理完整的容器生命周期:容器镜像的传输和存储、容器的执行和管理、存储和网络等,是目前适用最广泛。 Containerd 的配置文件默认为 /etc/containerd/config.toml[^ssh-copy-id] containerd 将容器相关的数据持久化在 /var/lib/containerd/中(docker 默认在 /var/lib/docker/) containerd 提供ctr CLI。

containerd 相比docker, 多了 namespace 概念, 每个image和container 都会在各自的namespace下可见, 目前k8s会使用k8s.io 作为命名空间。 容器时依赖task,task 管理容器,删除容器,得先终止task CRI Tools是社区针对 CRI 接口开发的CLI及验证工具。 它包括两个工具:crictl 和 critest。crictl 是一个容器运行时命令行接口,适用所有CRI兼容的容器运行时,与Docker cli类似功能,但是docker cli只适用于Docker运行时。

由于Kubernetes 是支持所有CRI兼容的容器运行时,所以推荐crictl用于 Kubernetes 节点上 pod、容器以及镜像的除错工具。 针对pod操作如下: critest 则是一个容器运行时的验证测试工具,用于验证容器运行时是否符合 Kubelet CRI 的要求。除了验证测试,critest 还提供了 CRI 接口的性能测试,比如 critest -benchmark 根据上文内容知道Docker也是依赖Containerd,因此安装Docker同时也安装Containerd,那么切Containerd就可以不用再安装,当然你也可以将 Docker 和 containerd 完全卸载掉,然后重新安装。

一、Mac 下使用虚拟机安装 Kubernetes

电脑 8 核 16 G 1. 安装 VMware 2. 安装 Centos 3. 配置阿里云         a. cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup         b. wget -O /etc/yum.repos.d/CentOS-Base.repo  http://mirrors.aliyun.com/repo/Centos-7.repo         c. yum makecache         d. yum update         e. yum clean all 4. 配置静态网络(可省略)         a. cat /Library/Preferences/VMware Fusion/vmnet8/nat.conf                 i. 获取 IPADDR                 ii. 获取 NETMASK         b. /qLibrary/Preferences/VMware Fusion/vmnet8/dhcpd.conf                     i. 获取GATEWAY         c. vi /etc/sysconfig/network-scripts/ifcfg-ens33                 i. BOOTPROTO=static(ip地址设置为静态的)                 ii. IPADDR=上面mac中找到的ip范围中设置一个                 iii. NETMASK=255.255.255.0(也是从上面得到)                 iv. GATEWAY=设置上面mac中看到的gatway地址,即router路由地址(192.168.181.2)                 v. OnBOOT=yes                 vi. DNS1=x.x.x.x(在mac,网络,高级里面的选项卡能够找到         d. systemctl restart network.service 5. 安装 docker 15         a. mkdir /etc/yum.repos.d/bak         b. cp /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak         c. wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo         d. yum clean all && yum makecache         e. yum install -y docker-ce-18.06.1.ce-3.el7         f. systemctl enable docker && systemctl start docker         g. docker version 6. 安装 kubernetes         a. 配置国内Kubernetes源                 cat < /etc/yum.repos.d/kubernetes.repo                 [kubernetes]                 name=Kubernetes                 baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/                 enabled=1                 gpgcheck=1                 repo_gpgcheck=1                 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg                 EOF         b. yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.1 7. 部署 Kubernetes         a. systemctl stop firewalld & systemctl disable firewalld 关闭防火墙         b. swapoff -a         c. setenforce 0 关闭 Selinux         d. 修改/etc/sysconfig/selinux文件 SELINUX=disabled         e. 创建/etc/sysctl.d/k8s.conf                 net.bridge.bridge-nf-call-iptables = 1                 net.bridge.bridge-nf-call-ip6tables = 1         f. sysctl --system         g. 进入 /home/你的文件夹         h. kubeadm config print init-defaults > kubeadm.conf                 i. sed -i "s/advertiseAddress: .*/advertiseAddress: 你的 IP/g" kubeadm.conf                 j. sed -i "s/podSubnet: .*/podSubnet: \"192.168.0.0\/16\"/g" kubeadm.conf                 k. sed -i "s/imageRepository: .*/imageRepository: registry.aliyuncs.com\/google_containers/g" kubeadm.conf                 l. sed -i "s/kubernetesVersion: .*/kubernetesVersion: v1.17.3/g" kubeadm.conf                 m. kubeadm config images pull --config kubeadm.conf (拉去镜像)                 n. kubeadm init --config kubeadm.conf 初始化                 o. 命令照搬                         mkdir -p $HOME/.kube                         sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config                         sudo chown $(id -u):$(id -g) $HOME/.kube/config 8. 安装网络插件         a. wget https://docs.projectcalico.org/v3.8/manifests/calico.yaml         b. kubectl apply -f calico.yaml         c. 查看安装情况:kubectl get pods --all-namespaces 9. kubectl taint nodes --all node-role.kubernetes.io/master- 10. 拍摄快照

Windows安装Kubernetes

学习Kubernetes的第一步就需要搭建一个可用的Kubernetes环境,这里针对Windows的安装过程做简要记录 事先安装 Docker Desktop 安装过程中可能会出现错误需要我们及时查看日志来排查问题,日志目录:C:\ProgramData\DockerDesktop 首先确认当前需要安装的版本,从下图中可以看到需要安装的版本为v1.22.4 确认镜像源配置为阿里云镜像加速 由于国内的网络问题,直接启用Kubernetes会无法正常启动,如下图所示进入目录C:\Windows\System32\drivers\etc编辑文件hosts添加一行 否则执行命令会出现如下错误 把勾勾上,等待一段时间,就会发现下发那个kubernetes的点变绿了,代表kubernetes启动成功 由于启动较慢,这里可以通过命令查看容器的启动状态 此时即可以说明环境安装正常 使用kubectl proxy命令访问 打开浏览器访问网址 填入Token并信息登录 进入后可以看到如下页面 清理旧提权 创建集群用户 查token用于登录 登录看板 此时这里可以看到多有的命令空间,且右侧不会再有报错通知消息 此时查看Pod等待正常运行即可 打开浏览器访问 http://localhost:8080/ https://blog.csdn.net/qq_38836770/article/details/108801300 https://wayneshao.com/posts/10324.html https://github.com/AliyunContainerService/k8s-for-docker-desktop/issues/180 https://blog.csdn.net/zhangbaoxiang/article/details/106559533

win10下docker开通k8s教程

一、Docker For Windows Stable在Enable Kubernetes这个问题上是有Bug的,建议切换到Edge版本 二、为了更快的完成一些安装,我们先通过一个阿里云的批处理,提前把Kubernetes需要的Images拉取下来,在powershell执行如下: git clone https://github.com/AliyunContainerService/k8s-for-docker-desktop.git cd k8s-for-docker-desktop .\load_images.ps1 无法加载文件 .ps1,因为在此系统中禁止执行脚本 以管理员身份运行powershell 执行 set-executionpolicy remotesigned 输入y即可 三、切换Settings到Kubernetes,勾选开启项进行安装,这个过程可能比较久。四、获取所有的上下文。

Kubernetes(K8S)入门与安装配置

Kubernetes 是一个跨主机集群的开源的容器调度平台,它可以自动化应用容器的部署、扩展和操作 , 提供以容器为中心的基础架构。谷歌旗下开源软件,江湖人称K8S。

上图是一个通过K8S搭建的集群环境,采用三台物理机搭建(三台机器是K8S搭建集群的最低要求),我先简单介绍一下几个重点名词。

Centos 7 Master * 1 (注意必须是双核以上的CPU,否则无法初始化K8S) Centos 7 Node * 2 将文件上传至该目录 网盘地址: https://pan.baidu.com/s/1NiAdf0Gp24qjVx2v_HqqyQ 提取码:aew7 执行以下命令 如果不是groupfs,执行下列语句 将最后一行注释 运行docker images可以看到以下几个关键应用 kube-proxy 容器间通讯代理、kube-apiserver API服务端、kube-scheduler 任务调度器、kube-controller-manager 集群控制器、coredns  K8S内置的 DNS 服务器、etcd 用于保存集群所有的网络配置和对象的状态信息、pause前面已经提到用于容器间的通讯以及数据卷的挂载。至此K8S安装完成 图中的第一个红框的命令是需要管理员手动复制,然后在master服务器上执行的。 PS: admin.conf是kubeadm集群管理的核心配置文件,包含整个集群各个节点的授权信息,以及本身的一些配置信息 第二个红框中的命令是在node节点上执行,里面包含了一个加入集群的token认证信息以及ca证书的hashcode。通过该token可以加入K8S集群. 从图中看到master节点处于NotReady状态,说明节点中存在有问题的Pod,查看存在问题的pod,执行以下命令查看所有Pod状态 如果某个Pod的STATUS处于CrashLoopBackOff状态表示创建失败了,那么它会不断自动重新创建。

上图中两个coredns处于pending状态,原因是我们没有配置K8S网络通讯协议fannel,从上传的文件中加载并创建flannel网络组件 3.在node节点上执行刚刚由kubeadm生成的节点加入命令 如果出现反复无法加入节点的情况,运行 kubeadm reset 这条命令还原当前节点上 kubeadm init 或者 kubeadm join 所做的所有更改。当想加入新节点忘记token时可以使用 kubeadm token list 查看token,或者 kubeadm token create创建token,采用跳过ca安全认证的方式加入节点。 4.三台机器设置kubelet开机自启,至此通过kubeadm集群配置完成 在主节点上执行以下命令,以下三个配件都是已经配置好的,装载即可。

图中dashboard服务已经被创建,配置文件中关闭了密码验证,只需要浏览器打开 http://192.168.220.131:32000无需登录。

k8s安装部署

K8s集群搭建 1 centos版本信息查看 [root@localhost ~]# uname -a Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux k8s集群机器关闭防火墙 [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. 2 安装必要的包 k8s集群安装以下安装包 [root@k8s-node ~]# yum -y install net-tools wget vim ntpd [root@k8s-node ~]# systemctl enable ntpd [root@k8s-node ~]# systemctl start ntpd 3配置hosts [root@k8s-node ~]# cat /etc/hosts 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.248.141 k8s-master 192.168.248.142 k8s-node 4 部署master节点 4.1 Master节点安装必要的安装包 [root@k8s-master ~]# yum -y install etcd 4.2更改/etc/etcd/etcd.conf配置文件 [root@k8s-master etcd]# cat /etc/etcd/etcd.conf | grep -v "^#" ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001" ETCD_NAME="master" ETCD_ADVERTISE_CLIENT_URLS= http://k8s-master:2379,http://k8s-master:4001 4.3设置开机启动并验证状态 [root@k8s-master ~]#systemctl enable etcd [root@k8s-master ~]#systemctl start etcd etcd检查 [root@k8s_master ~]# etcdctl -C http://k8s-master:4001 cluster-health member 8e9e05c52164694d is healthy: got healthy result from http://k8s_master:2379 cluster is healthy [root@k8s_master ~]# etcdctl -C http://k8s-master:2379 cluster-health member 8e9e05c52164694d is healthy: got healthy result from http://k8s_master:2379 cluster is healthy 5 安装部署docker环境(略) 6 安装kubernetes [root@k8s_master ~]# yum install kubernetes 安装过程中报错如下 Error: docker-ce conflicts with 2:docker-1.13.1-75.git8633870.el7.centos.x86_64 可以执行如下命令解决 1、查看安装过的docker:yum list installed | grep docker 2、卸载docker:yum remove -y docker-ce.x86_64 0:18.03.0.ce-1.el7.centos 3、删除容器镜像:rm -rf /var/lib/docker 再次安装kubernetes,安装成功,而且会自动安装docker 6.1修改apiserver服务的配置文件 [root@k8s-master kubernetes]# cat /etc/kubernetes/apiserver | grep -v "^#" KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" KUBE_API_PORT="--port=8080" KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.248.141:2379" KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" KUBE_ADMISSION_COnTROL="--admission-cOntrol=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota" KUBE_API_ARGS="" 6.2修改config配置文件: [root@k8s-master kubernetes]# cat /etc/kubernetes/config | grep -v "^#" KUBE_LOGTOSTDERR="--logtostderr=true" KUBE_LOG_LEVEL="--v=0" KUBE_ALLOW_PRIV="--allow-privileged=false" KUBE_MASTER="--master=http://192.168.248.141:8080" 设置开机启动,开启服务 [root@k8s-master ~]#systemctl enable kube-apiserver kube-controller-manager kube-scheduler docker [root@k8s-master ~]#systemctl start kube-apiserver kube-controller-manager kube-scheduler docker 6.3查看服务端口: [root@k8s-master ~]# netstat –tnlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1273/master         tcp        0      0 127.0.0.1:2380          0.0.0.0:*               LISTEN      2126/etcd           tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      571/rpcbind         tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1362/dnsmasq        tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      998/sshd            tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      996/cupsd           tcp6       0      0 ::1:25                  :::*                    LISTEN      1273/master         tcp6       0      0 :::4001                 :::*                    LISTEN      2126/etcd           tcp6       0      0 :::6443                 :::*                    LISTEN      3216/kube-apiserver tcp6       0      0 :::10251                :::*                    LISTEN      3222/kube-scheduler tcp6       0      0 :::2379                 :::*                    LISTEN      2126/etcd           tcp6       0      0 :::10252                :::*                    LISTEN      3221/kube-controlle tcp6       0      0 :::111                  :::*                    LISTEN      571/rpcbind         tcp6       0      0 :::8080                 :::*                    LISTEN      3216/kube-apiserver tcp6       0      0 :::22                   :::*                    LISTEN      998/sshd            tcp6       0      0 ::1:631                 :::*                    LISTEN      996/cupsd  7部署node节点 7.1安装docker(略)安装k8s(略) 7.2 Node节点主机做以下配置: 修改config配置文件 [root@k8s-node kubernetes]# cat /etc/kubernetes/config | grep -v "^#" KUBE_LOGTOSTDERR="--logtostderr=true" KUBE_LOG_LEVEL="--v=0" KUBE_ALLOW_PRIV="--allow-privileged=false" KUBE_MASTER="--master=http://192.168.248.141:8080" 修改kubelet配置文件 [root@k8s-node kubernetes]# cat /etc/kubernetes/kubelet | grep -v "^#" KUBELET_ADDRESS="--address=0.0.0.0" KUBELET_HOSTNAME="--hostname-override=192.168.248.142" KUBELET_API_SERVER="--api-servers=http://192.168.248.141:8080" KUBELET_POD_INFRA_COnTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest" KUBELET_ARGS="" 设置开机启动、开启服务 [root@k8s_client1 ~]# systemctl enable kubelet kube-proxy [root@k8s_client1 ~]# systemctl start kubelet kube-proxy 查看端口: [root@k8s_client1 ~]# netstat –ntlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1277/master         tcp        0      0 127.0.0.1:10248         0.0.0.0:*               LISTEN      3246/kubelet        tcp        0      0 127.0.0.1:10249         0.0.0.0:*               LISTEN      3133/kube-proxy     tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      575/rpcbind         tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1332/dnsmasq        tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1000/sshd           tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      998/cupsd           tcp6       0      0 ::1:25                  :::*                    LISTEN      1277/master         tcp6       0      0 :::4194                 :::*                    LISTEN      3246/kubelet        tcp6       0      0 :::10250                :::*                    LISTEN      3246/kubelet        tcp6       0      0 :::10255                :::*                    LISTEN      3246/kubelet        tcp6       0      0 :::111                  :::*                    LISTEN      575/rpcbind         tcp6       0      0 :::22                   :::*                    LISTEN      1000/sshd           tcp6       0      0 ::1:631                 :::*                    LISTEN      998/cupsd       Master上查看集群中的节点及节点状态 [root@k8s-master kubernetes]# kubectl get node NAME              STATUS    AGE 192.168.248.142   Ready     2m [root@k8s-master kubernetes]# kubectl -s http://k8s-master:8080 get node NAME              STATUS    AGE 192.168.248.142   Ready     2m kubernetes集群搭建完成。 在k8s集群中创建pod,如果出现如下错误 其中最主要的问题是:details: (open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory) 解决方案: 查看/etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt (该链接就是上图中的说明) 是一个软链接,但是链接过去后并没有真实的/etc/rhsm,所以需要使用yum安装: yum install *rhsm* 安装完成后,执行一下docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest 如果依然报错,可参考下面的方案: wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem  注释:rpm2cpio命令用于将rpm软件包转换为cpio格式的文件 cpio命令主要是用来建立或者还原备份档的工具程序,cpio命令可以复制文件到归档包中,或者从归档包中复文件。

                      -i   还原备份档              -v  详细显示指令的执行过程 这两个命令会生成/etc/rhsm/ca/redhat-uep.pem文件. [root@k8s-node ~]# docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest 在master节点新建pod并查看起状态为正常 flannel是CoreOS提供用于解决Dokcer集群跨主机通讯的覆盖网络工具。

它的主要思路是:预先留出一个网段,每个主机使用其中一部分,然后每个容器被分配不同的ip;让所有的容器认为大家在同一个直连的网络,底层通过UDP/VxLAN等进行报文的封装和转发。


推荐阅读
author-avatar
昧凉生丶楚_139
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有