设为首页 收藏本站
查看: 2105|回复: 0

[经验分享] Kubernetes之部署calico网络

[复制链接]

尚未签到

发表于 2018-9-15 13:34:18 | 显示全部楼层 |阅读模式
  部署calico网络
  Calico组件:
  Felix:Calico agent     运行在每台node上,为容器设置网络信息:IP,路由规则,iptable规则等
  etcd:calico后端存储
  BIRD:  BGP Client: 负责把Felix在各node上设置的路由信息广播到Calico网络( 通过BGP协议)。
  BGP Route Reflector: 大规模集群的分级路由分发。
  calico: calico命令行管理工具
  为各Node部署calico的步骤如下
  参照官方文档:https://docs.projectcalico.org/v2.6/getting-started/kubernetes/installation/hosted/hosted
  1、下载部署的yaml文件:
wget https://docs.projectcalico.org/v2.6/getting-started/kubernetes/installation/rbac.yaml  
wget https://docs.projectcalico.org/v2.6/getting-started/kubernetes/installation/hosted/calico.yaml
  2、对于RBAC文件,不用做修改,直接创建即可:
calico# /data/calico.yaml# kubectl create -f calico-rbac.yaml  
clusterrole "calico-kube-controllers" created
  
clusterrolebinding "calico-kube-controllers" created
  
clusterrole "calico-node" created
  
clusterrolebinding "calico-node" created
  
  3、配置calico
calico# vim calico.yaml  
data:
  
  # Configure this with the location of your etcd cluster.
  
  etcd_endpoints: "https://10.3.1.15:2379,https://10.3.1.16:2379,https://10.3.1.17:2379"
  

  
  # If you're using TLS enabled etcd uncomment the following.
  
  # You must also populate the Secret below with these files.
  
  etcd_ca: "/calico-secrets/etcd-ca"   #取消原来的注释即可
  
  etcd_cert: "/calico-secrets/etcd-cert"
  
  etcd_key: "/calico-secrets/etcd-key"
  

  

  
apiVersion: v1
  
kind: Secret
  
type: Opaque
  
metadata:
  
  name: calico-etcd-secrets
  
  namespace: kube-system
  
data:
  
etcd-key: (cat /etc/kubernetes/ssl/etcd-key.pem | base64 | tr -d '\n') #将输出结果填写在这里
  
  etcd-cert: (cat /etc/kubernetes/ssl/etcd.pem | base64 | tr -d '\n') #将输出结果填写在这里
  
  etcd-ca: (cat /etc/kubernetes/ssl/ca.pem | base64 | tr -d '\n') #将输出结果填写在这里
  
   #如果etcd没用启用tls则为null
  
  #上面是必须要修改的参数,文件中有一个参数是设置pod network地址的,根据实际情况做修改:
  
   - name: CALICO_IPV4POOL_CIDR
  
     value: "192.168.0.0/16"
  关于ConfigMap部分主要参数如下:
  etcd_endpoints:Calico使用etcd来保存网络拓扑和状态,该参数指定etcd的地址,可以使用K8S Master所用的etcd,也可以另外搭建。
  calico_backend:Calico的后端,默认为bird。
  cni_network_config:符合CNI规范的网络配置,其中type=calico表示,Kubelet从 CNI_PATH(默认为/opt/cni/bin)找名为calico的可执行文件,用于容器IP地址的分配。
  etcd如果配置了TLS安全认证,则还需要指定相应的ca、cert、key等文件
  关于通过DaemonSet部署的calico-node服务的主要参数:
  该POD中主包括如下两个容器:
  calico-node:calico服务程序,用于设置Pod的网络资源,保证pod的网络与各Node互联互通,它还需要以HostNetwork模式运行,直接使用宿主机网络。
  install-cni:在各Node上安装CNI二进制文件到/opt/cni/bin目录下,并安装相应的网络配置文件到/etc/cni/net.d目录下。
  calico-node服务的主要参数:
  CALICO_IPV4POOL_CIDR: Calico IPAM的IP地址池,Pod的IP地址将从该池中进行分配。
  CALICO_IPV4POOL_IPIP:是否启用IPIP模式,启用IPIP模式时,Calico将在node上创建一个tunl0的虚拟隧道。
  FELIX_LOGSEVERITYSCREEN: 日志级别。
  FELIX_IPV6SUPPORT : 是否启用IPV6。
  IP Pool可以使用两种模式:BGP或IPIP。使用IPIP模式时,设置 CALICO_IPV4POOL_IPIP="always",不使用IPIP模式时,设置为"off",此时将使用BGP模式。
  IPIP是一种将各Node的路由之间做一个tunnel,再把两个网络连接起来的模式,启用IPIP模式时,Calico将在各Node上创建一个名为"tunl0"的虚拟网络接口。
  
  4、创建:
calico# kubectl create -f calico.yaml  
configmap "calico-config" created
  
secret "calico-etcd-secrets" created
  
daemonset "calico-node" created
  
deployment "calico-kube-controllers" created
  
deployment "calico-policy-controller" created
  
serviceaccount "calico-kube-controllers" created
  
serviceaccount "calico-node" created
calico# kubectl get deployment,pod -n kube-system  
NAME                              DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
  
deploy/calico-kube-controllers    1         1         1            1           4m
  
deploy/calico-policy-controller   0         0         0            0           4m
  

  
NAME                                           READY     STATUS    RESTARTS   AGE
  
po/calico-kube-controllers-56d9f8c44c-6hftd    1/1       Running   0          4m
  
po/calico-node-6k827                           2/2       Running   0          4m
  
po/calico-node-wfbpz                           2/2       Running   0          4m
  
#calico-node用的是daemonset,会在每个node上启动一个
  创建的资源如下:
DaemonSet:  
     name: calico-node 这个pod里运行两个容器
  hostNetwork: true
  serviceAccountName: calico-node
  两个容器:
  name: calico-node
  image: quay.io/calico/node:v2.6.5
  name: install-cni
  image: quay.io/calico/cni:v1.11.2
  command: ["/install-cni.sh"]
  

  
  Deployment
  
      name ---calico-kube-controllers replicas: 1   #网络策略控制器
  
      serviceAccountName: calico-kube-controllers
  
      containers:
  
        - name: calico-kube-controllers
  
          image: quay.io/calico/kube-controllers:v1.0.2
  
  5、修改kubelet配置:
  设置各node上Kubelet服务的启动参数: --network-plugin=cni, 可能还要加上这两个参数:
  --cni-conf-dir  CNI插件的配置文件目录,默认为/etc/cni/net.d 该目录下的配置文件内容需要符合CNI规范
  --cni-bin-dir: CNI插件的可执行文件目录,默认为/opt/cni/bin
  设置 master上的kube-apiserver服务的启动参数: --allow-privileged=true (因为calico-node需要以特权模式运行在各node上)
  设置好后,重新启动kubelet。
  这样通过calico就完成了Node间容器网络的设置 ,在后续的pod创建过程中,Kubelet将通过CNI接口调用 calico进行Pod的网络设置包括IP地址,路由规则,Iptables规则
  6,验证各Node间网络联通性:
kubelet启动后主机上就生成了一个tunl0接口。  
#第一台Node查看:
  
root@node1# ip route
  
192.168.77.192/26 via 10.3.1.17 dev tunl0  proto bird onlink
  

  
#第二台Node查看:
  
root@node2# ip route
  
192.168.150.192/26 via 10.3.1.16 dev tunl0  proto bird onlink
  

  

  
#每台node上都自动设置了到其它node上pod网络的路由,去往其它节点的路都是通过tunl0接口,这就是IPIP模式。
  如果设置CALICO_IPV4POOL_IPIP="off" ,即不使用IPIP模式,则Calico将不会创建tunl0网络接口,路由规则直接使用物理机网卡作为路由器转发。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-583604-1-1.html 上篇帖子: kubernetes1.9离线部署 下篇帖子: Kubernetes 架构(下)- 每天5分钟玩转 Docker 容器技术(121)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表