环境

系统:centos7.3
192.168.40.50 local-master
192.168.40.51 local-node1
192.168.40.52 local-node2

master:
kubernetes-master-1.5.2-0.2.gitc55cf2b.el7.x86_64
kubernetes-client-1.5.2-0.2.gitc55cf2b.el7.x86_64
etcd-3.1.0-2.el7.x86_64
docker-client-1.12.6-11.el7.centos.x86_64
docker-1.12.6-11.el7.centos.x86_64
docker-common-1.12.6-11.el7.centos.x86_64
node:
kubernetes-client-1.5.2-0.2.gitc55cf2b.el7.x86_64
kubernetes-node-1.5.2-0.2.gitc55cf2b.el7.x86_64
docker-client-1.12.6-11.el7.centos.x86_64
docker-1.12.6-11.el7.centos.x86_64
docker-common-1.12.6-11.el7.centos.x86_64

一. 修改各节点docker ip

master:

vi  /usr/lib/systemd/system/docker.service
--bip=172.25.0.1/24 \
# systemctl daemon-reload
# systemctl restart docker

node1:

vi  /usr/lib/systemd/system/docker.service
--bip=172.25.1.1/24 \
# systemctl daemon-reload
# systemctl restart docker

node2:

vi  /usr/lib/systemd/system/docker.service
--bip=172.25.2.1/24 \
# systemctl daemon-reload
# systemctl restart docker

二.下载插件

master:

# wget https://github.com/projectcalico/calicoctl/releases/download/v1.1.0/calicoctl
# chmod +x calicoctl
# mv calicoctl /usr/bin/
# docker pull docker.io/calico/node:v1.1.0
# docker tag docker.io/calico/node:v1.1.0 quay.io/calico/node:v1.1.0
# wget -N -P /opt/cni/bin/ https://github.com/projectcalico/calico-cni/releases/download/v1.6.0/calico
# wget -N -P /opt/cni/bin/ https://github.com/projectcalico/calico-cni/releases/download/v1.6.0/calico-ipam
# chmod +x /opt/cni/bin/calico /opt/cni/bin/calico-ipam

node

# docker pull docker.io/calico/node:v1.1.0
# docker tag docker.io/calico/node:v1.1.0 quay.io/calico/node:v1.1.0
# wget -N -P /opt/cni/bin/ https://github.com/projectcalico/calico-cni/releases/download/v1.6.0/calico
# wget -N -P /opt/cni/bin/ https://github.com/projectcalico/calico-cni/releases/download/v1.6.0/calico-ipam
# chmod +x /opt/cni/bin/calico /opt/cni/bin/calico-ipam

三. 配置文件

参考:http://docs.projectcalico.org/v2.1/usage/configuration/as-service
集群所有主机都需要配置以下三个文件
创建calico-node启动文件

# vi /usr/lib/systemd/system/calico-node.service

[Unit]
Description=calico-node
After=docker.service
Requires=docker.service
[Service]
EnvironmentFile=/etc/calico/calico.env
ExecStartPre=-/usr/bin/docker rm -f calico-node
ExecStart=/usr/bin/docker run --net=host --privileged \
--name=calico-node \
-e NODENAME=${CALICO_NODENAME} \
-e IP=${CALICO_IP} \
-e IP6=${CALICO_IP6} \
-e CALICO_NETWORKING_BACKEND=${CALICO_NETWORKING_BACKEND} \
-e AS=${CALICO_AS} \
-e NO_DEFAULT_POOLS=${CALICO_NO_DEFAULT_POOLS} \
-e CALICO_LIBNETWORK_ENABLED=${CALICO_LIBNETWORK_ENABLED} \
-e ETCD_ENDPOINTS=${ETCD_ENDPOINTS} \
-e ETCD_CA_CERT_FILE=${ETCD_CA_CERT_FILE} \
-e ETCD_CERT_FILE=${ETCD_CERT_FILE} \
-e ETCD_KEY_FILE=${ETCD_KEY_FILE} \
-v /var/log/calico:/var/log/calico \
-v /run/docker/plugins:/run/docker/plugins \
-v /lib/modules:/lib/modules \
-v /var/run/calico:/var/run/calico \
quay.io/calico/node:v1.1.0
ExecStop=-/usr/bin/docker stop calico-node [Install]
WantedBy=multi-user.target

创建calico-node服务的环境文件

# vi /etc/calico/calico.env
ETCD_ENDPOINTS=http://local-master:2379
ETCD_CA_FILE=""
ETCD_CERT_FILE=""
ETCD_KEY_FILE=""
CALICO_NODENAME=""
CALICO_NO_DEFAULT_POOLS=""
#CALICO_IP=""
CALICO_IP=""
CALICO_IP6=""
CALICO_AS=""
CALICO_LIBNETWORK_ENABLED=true
CALICO_NETWORKING_BACKEND=bird

创建CNI网络配置文件,用于通知kubernetes创建一个名为calico-k8s-network的网络,并对此网络使用calico插件

# mkdir /etc/cni/net.d
# vi /etc/cni/net.d/10-calico.conf
{
"name": "calico-k8s-network",
"type": "calico",
"etcd_endpoints": "http://local-master:2379",
"log_level": "info",
"ipam": {
"type": "calico-ipam"
},
"policy": {
"type": "k8s"
}

master主机上修改

# vim /etc/etcd/etcd.conf
# [member]
ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://local-master:2380"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
#[cluster]
ETCD_INITIAL_CLUSTER="default=http://local-master:2380"
ETCD_ADVERTISE_CLIENT_URLS=http://local-master:2379

master 主机上
wget http://docs.projectcalico.org/v1.5/getting-started/kubernetes/installation/policy-controller.yaml
修改 policy-controller.yaml文件里的etcd的地址

在minion主机上面需要修改kubelet的配置文件
 vi /usr/lib/systemd/system/kubelet.service

[Service]
WorkingDirectory=/var/lib/kubelet
EnvironmentFile=-/etc/kubernetes/config
EnvironmentFile=-/etc/kubernetes/kubelet
ExecStart=/usr/bin/kubelet \
$KUBE_LOGTOSTDERR \
$KUBE_LOG_LEVEL \
$KUBELET_API_SERVER \
$KUBELET_ADDRESS \
$KUBELET_PORT \
$KUBELET_HOSTNAME \
$KUBE_ALLOW_PRIV \
$KUBELET_POD_INFRA_CONTAINER \
$KUBELET_ARGS
--network-plugin=cni \
--network-plugin-dir=/etc/cni/net.d \

四. 启动

master

# serivce etcd restart
# kubectl create -f policy-controller.yaml

每个节点上启动calico-node服务

# systemctl enable calico-node
# systemctl start calico-node
# export ETCD_AUTHORITY=local-master:2379

五.验证calico是否启动正常

calicoctl node status
calicoctl get nodes --out=wide

图片.png

图片.png

六.添加子网

[root@local-master v1.1.0]# cat pool.yaml
apiVersion: v1
kind: ipPool
metadata:
cidr: 172.25.0.0/16
spec:
ipip:
enabled: true
mode: always
nat-outgoing: true
[root@local-master v1.1.0]# calicoctl apply -f pool.yaml

查看子网

图片.png

七.修改node上的配置

设置kube-proxy服务的proxy-mode配置为iptables,修改配置文件/etc/kubernetes/proxy:
KUBE_PROXY_ARGS=" --proxy-mode=iptables"
service kube-proxy restart

k8s-calico【转载】的更多相关文章

  1. K8S Calico

    NetworkPolicy是kubernetes对pod的隔离手段,是宿主机上的一系列iptables规则. Egress 表示出站流量,就是pod作为客户端访问外部服务,pod地址作为源地址.策略可 ...

  2. K8S Calico网络插件

    0.前言 参考文档:https://github.com/containernetworking/cni Pod网络插件,为了实现Pod网络而需要的插件.组件.由于Kubernetes通过开放的CNI ...

  3. k8s资料转载

    K8S入门(二) kubeadmin单机部署 (kubernetes)k8s入门.yum单机版安装.kuberctl指令.k8s服务实例. kubernetes---CentOS7安装kubernet ...

  4. K8S从入门到放弃系列-(11)kubernetes集群网络Calico部署

    摘要: 前面几个篇幅,已经介绍master与node节点集群组件部署,由于K8S本身不支持网络,当 node 全部启动后,由于网络组件(CNI)未安装会显示为 NotReady 状态,需要借助第三方网 ...

  5. k8s的两种网络方案与多种工作模式[flannel与calico]

    k8s的两种网络方案与多种工作模式 1. Flannel: flannel有三种工作模式: 1. vxlan(隧道方案) 2. host-gw(路由方案) 2. udp(在用户态实现的数据封装解封装, ...

  6. Kubeasz部署K8s基础测试环境简介

    下面介绍使用Kubeasz部署K8s集群环境. https://github.com/easzlab/kubeasz在需要使用kubeeasz项目安装的k8s时,需要将所有需要它来部署的节点上,都安装 ...

  7. 8、二进制安装K8s之部署CIN网络

    二进制安装K8s之部署CIN网络 部署CIN网络可以使用flannel或者calico,这里介绍使用calico ecd 方式部署. 1.下载calico二进制安装包 创建所需目录 mkdir -p ...

  8. 从一到万的运维之路,说一说VM/Docker/Kubernetes/ServiceMesh

    摘要:本文从单机真机运营的历史讲起,逐步介绍虚拟化.容器化.Docker.Kubernetes.ServiceMesh的发展历程.并重点介绍了容器化阶段之后,各项重点技术的安装.使用.运维知识.可以说 ...

  9. 使用Kubeadm(1.13+)快速搭建Kubernetes集群

    Kubeadm是管理集群生命周期的重要工具,从创建到配置再到升级,Kubeadm处理现有硬件上的生产集群的引导,并以最佳实践方式配置核心Kubernetes组件,以便为新节点提供安全而简单的连接流程并 ...

  10. kubernetes---CentOS7安装kubernetes1.11.2图文完整版

    转载请注明出处:kubernetes-CentOS7安装kubernetes1.11.2图文完整版 架构规划 k8s至少需要一个master和一个node才能组成一个可用集群. 本章我们搭建一个mas ...

随机推荐

  1. 科匠中国深圳java面试笔试题

  2. JavaScript原型和闭包学习笔记

    在这里先和大家推荐一个博客,这博客的<深入理解javascript原型和闭包(完结)>系列,看了比较多的视频和书本,这个博客讲得很耐人寻味. 深入理解javascript原型和闭包(完结) ...

  3. ''.startswith() and ''.endswith() instead of string slicing to check for prefixes or suffixes.

    w http://legacy.python.org/dev/peps/pep-0008/ Yes: if foo.startswith('bar'):No:  if foo[:3] == 'bar' ...

  4. SQL element_at函数

    库里有类似josn形式的字符串数据attr{"a":"123","b":"234"."c":&quo ...

  5. Java常用工具——java包装类

    一.包装类和基本数据类型 装箱:基本数据类型——包装类 拆箱:包装类——基本数据类型 package com.imooc.wrap; public class WrapTestOne { public ...

  6. MySQL 安装示例数据库(employee、world、sakila、menagerie 等)

    sakila 示例数据库官方资料及安装说明,注意查看示例数据库支持的版本是否匹配你的数据库. 为了测试,有时候需要大量的数据集,MySQL 官方提供了用于测试的示例数据库,下载页面在 这里. 下面以 ...

  7. vcsa6.5安装部署配置(vSphere vsan 6.5)

    首先您最好先了解下vcenter和vcsa是啥:VMware Vsphere 几个不同的组件 esxi是在物理服务器安装的服务端,所有虚拟机是安装再esxi里面的,是服务端:vcenter是管理端 是 ...

  8. PHP批量生成底部带编号二维码(二维码生成+文字生成图片+图片拼接合并)

    PHP批量生成带底部编号二维码(二维码生成+文字生成图片+图片拼接合并) 需求: 输入编号如 : cb05-0000001  至 cb05-0000500 批量生成 以编号为名称的下图二维码,然后压缩 ...

  9. tp框架视图层view——模板继承

    在做网站的时候,每个网站都有头部和尾部,也就是菜单栏和页脚,网站的各个子网页的头部和尾部基本就是一样的,所以tp框架提供了一种模板继承的方法: 1.首先在View的Main文件夹下建立一个base.h ...

  10. Vue作用域插槽:基本用法

    一 项目结构 二 App组件 <template> <div id="app"> <!-- 子组件 --> <user v-slot:de ...