Calico在Kubernetes中的搭建
一,需求
二,准备
三,建立Etcd Cluster
#!/bin/sh
export localip=10.11.151.97
export name=bjcnctest0
export port1=
export port2=
export port3= sudo ./etcd \
-name $name \
-initial-advertise-peer-urls http://$localip:$port1 \
-listen-peer-urls http://0.0.0.0:$port1 \
-listen-client-urls http://0.0.0.0:$port2,http://0.0.0.0:$port3 \
-advertise-client-urls http://$localip:$port2,http://$localip:$port3\
-initial-cluster-token etcd-cluster \
-initial-cluster bjcnctest0=http://$localip:$port1,bjcnctest1=http://10.11.151.100:$port1,bjcnctest2=http://10.11.151.101:$port1 \
-initial-cluster-state new &
三台主机上分别运行etcd,组建好cluster,正确组建后,每个主机应该看到published name
四,设置Master
运行kube-apiserver:
./kube-apiserver --logtostderr=true --v= --etcd_servers=http://127.0.0.1:2379 --kubelet_port=10250 --allow_privileged=false --service-cluster-ip-range=172.16.0.0/12 --insecure-bind-address=0.0.0.0 --insecure-port=8080 2>&1 >apiserver.out &
kube-controller-manager:
./kube-controller-manager --logtostderr=true --v= --master=http://tc-151-97:8080 --cloud-provider="" 2>&1 >controller.out &
kube-scheduler:
./kube-scheduler --logtostderr=true --v= --master=http://tc-151-97:8080 2>&1 > scheduler.out &
在Master上运行Calico服务:
./calicoctl node --ip=10.11.151.97
用docker ps可以看到Calico node的container
1,新建一个网桥cbr0:
vi /etc/sysconfig/network-scripts/ifcfg-cbr0
-----------------------
DEVICE=cbr0
TYPE=Bridge
IPADDR=172.1.0.0
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=static
这里给出一个ip地址段172.1.0.0/24,每个主机上可以使用256个IP。
vi /usr/lib/systemd/system/docker.service在/usr/bin/docker daemon的启动参数中添加“--bridge=cbr0 --iptables=false --ip-masq=false”2,运行Calico服务
./calicoctl node --ip=10.11.151.1003,将calico-kubernetes插件放到kubernetes使用插件的位置,重命名:
mv calico-kubernetes /usr/libexec/kubernetes/kubelet-plugins/net/exec/calico/calico
chmod +x /usr/libexec/kubernetes/kubelet-plugins/net/exec/calico/calico
4,安装Kubernetes
KUBE_API_ROOT=http://10.11.151.97:8080/api/v1/ ./kube-proxy --logtostderr=true --v=0 --master=http://tc-151-97:8080 --proxy-mode=iptables &
这里KUBE_API_ROOT变量会传递给Calico,calico可以通过master的api去获取当前的pod或者node信息。
CALICO_IPAM=false KUBE_API_ROOT=http://10.11.151.97:8080/api/v1/ ./kubelet --logtostderr=true --v=0 --api_servers=http://tc-151-97:8080 --address=0.0.0.0 --network-plugin=calico --allow_privileged=false --pod-infra-container-image=10.11.150.76:5000/kubernetes/pause:latest > a.txt &
CALICO_IPAM=false是指定Calico的网络ip分配使用docker的网桥ip地址段,也就上上面我们自己新建的cbr0的网段。
./calicoctl pool show./calicoctl pool add 172.0.0.0/8 --nat-outgoing到此,NODE的配置创建成功。
六,测试一下
apiVersion: v1
kind: ReplicationController
metadata:
name: test-
spec:
replicas:
template:
metadata:
labels:
app: test-
spec:
containers:
- name: iperf
image: 10.11.150.76:/openxxs/iperf:1.2
nodeSelector:
kubernetes.io/hostname: tc--
在master上:
./kubelet create -f test.yaml创建多点Pods吧:
apiVersion: v1
kind: ReplicationController
metadata:
name: test-
spec:
replicas:
template:
metadata:
labels:
app: test-
spec:
containers:
- name: iperf
image: 10.11.150.76:/openxxs/iperf:1.2
nodeSelector:
kubernetes.io/hostname: tc--
这里我们在100主机上创建70个iperf的pods。
Calico在Kubernetes中的搭建的更多相关文章
- Calico在Docker中的搭建
一,Multi-host网络需求 开始之前推荐两篇文章 http://xelatex.github.io/2015/11/15/Battlefield-Calico-Flannel-Weave-and ...
- Kubernetes集群搭建之企业级环境中基于Harbor搭建自己的私有仓库
搭建背景 企业环境中使用Docker环境,一般出于安全考虑,业务使用的镜像一般不会从第三方公共仓库下载.那么就要引出今天的主题 企业级环境中基于Harbor搭建自己的安全认证仓库 介绍 名称:Harb ...
- Kubernetes 概述和搭建(多节点)
一.Kubernetes整体概述和架构 Kubernetes是什么 Kubernetes是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务.通过Kubernetes能够进行应用的自动化部署和扩缩 ...
- [云原生]Kubernetes - 集群搭建(第2章)
目录 一.前置知识点 二.kubeadm部署方式介绍 三.安装要求 四.最终目标 五.准备环境 六.环境初始化 6.1 设置系统主机名以及Hosts文件的相互解析 6.2 安装依赖文件(所有节点) 6 ...
- kubernetes中的Pause容器如何理解?
前几篇文章都是讲的Kubernetes集群和相关组件的部署,但是部署只是入门的第一步,得理解其中的一些知识才行.今天给大家分享下Kubernets的pause容器的作用. Pause容器 全称infr ...
- 关于 Kubernetes 中的 Volume 与 GlusterFS 分布式存储
容器中持久化的文件生命周期是短暂的,如果容器中程序崩溃宕机,kubelet 就会重新启动,容器中的文件将会丢失,所以对于有状态的应用容器中持久化存储是至关重要的一个环节:另外很多时候一个 Pod 中可 ...
- kubernetes集群搭建(2):docker私有仓库
kubernetes集群搭建(1):环境准备 中各节点已经安装好了docker,请确认docker已启动并正常运行 1.通过命令启动私库 docker run -d -p 5000:5000 --pr ...
- Kubernetes中StatefulSet介绍
StatefulSet 是Kubernetes1.9版本中稳定的特性,本文使用的环境为 Kubernetes 1.11.如何搭建环境可以参考kubeadm安装kubernetes V1.11.1 集群 ...
- Kubernetes中的网络
一.引子 既然Kubernetes中将容器的联网通过插件的方式来实现,那么该如何解决这个的联网问题呢? 如果你在本地单台机器上运行docker容器的话注意到所有容器都会处在docker0网桥自动分配的 ...
随机推荐
- easyUI icon中文命名图片无法在浏览器中访问处理方法
本身的原因是Tomcat没有设置URIencoding,导致无法识别 在Tomcat 文件夹 conf 中 server.xml中加 URIEncoding="utf-8" 可以 ...
- 警告: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.jee.server:CurrencyClientServe
有的说: 在Servers视图里双击创建的server,然后在其server的配置界面中选中"Publish module contexts to separate XML files&qu ...
- Spring 作用域 scope
spring的作用域将对Bean的生命周期和创建方式产生影响. 主要分为五种类型的作用域 singleton (默认)在spring IOC容器中仅存在一个Bean实例,Bean以单实例的方式存在. ...
- Freemarker 之 Java静态化 实例一
Freemarker是一种强大的web端模板技术,在当前Web开发中,SEO和客户端浏览速度尤为重要,其中将网页静态化是一个很好的解决方案.下面介绍Java中web开发结合Freemarker来实现静 ...
- 【CodeForces 622A】Infinite Sequence
题意 一个序列是, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5....这样排的,求第n个是什么数字. 分析 第n个位置属于1到k,求出k,然后n-i*(i-1)/ ...
- HTTP各个状态返回值
转载来自于:http://desert3.iteye.com/blog/1136548 502 Bad Gateway:tomcat没有启动起来 504 Gateway Time-out: nginx ...
- request.getAttribute() 和 request.getParameter() 有何区别?
HttpServletRequest类既有getAttribute()方法,也由getParameter()方法,这两个方法有以下区别: (1)HttpServletRequest类有setAttri ...
- BZOJ-1067 降雨量 线段树+分类讨论
这道B题,刚的不行,各种碎点及其容易忽略,受不鸟了直接 1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 2859 ...
- 【poj3070】 Fibonacci
http://poj.org/problem?id=3070 (题目链接) 题意 用矩阵乘法求fibonacci数列的第n项. Solution 矩乘入门题啊,题目把题解已经说的很清楚里= =. 矩乘 ...
- 用 AIML 开发人工智能聊天机器人
借助 Python 的 AIML 包,我们很容易实现人工智能聊天机器人.AIML 指的是 Artificial Intelligence Markup Language (人工智能标记语言),它不过是 ...