k8s使用calico网络-阿里云开发者社区

开发者社区> 店家小二> 正文

k8s使用calico网络

简介: calico是一个安全的 L3 网络和网络策略提供者。 calico使用bgp的原因:why bgp not ospf 有关BGP rr的介绍 安装方式 标准托管安装(ETCD存储) 需要提前安装etcd集群# 创建calico连接etcd的secret kubectl create secret.
+关注继续查看

calico是一个安全的 L3 网络和网络策略提供者。

calico使用bgp的原因:why bgp not ospf

有关BGP rr的介绍

安装方式

标准托管安装(ETCD存储)


  • 需要提前安装etcd集群
# 创建calico连接etcd的secret
kubectl create secret generic calico-etcd-secrets \
--from-file=etcd-key=/etc/kubernetes/ssl/kubernetes-key.pem \
--from-file=etcd-cert=/etc/kubernetes/ssl/kubernetes.pem \
--from-file=etcd-ca=/etc/kubernetes/ssl/ca.pem

# 部署
kubectl create -f https://docs.projectcalico.org/v3.0/getting-started/kubernetes/installation/hosted/calico.yaml # rbac
kubectl apply -f https://docs.projectcalico.org/v3.0/getting-started/kubernetes/installation/rbac.yaml

kubeadm 托管部署

依赖

  • k8s1.7+
  • 没有其他cni插件(华为开源的CNI-Genie可以同时运行多个CNI)
  • –pod-network-cidr参数需要和calico ip pool保持一致
  • –service-cidr 不能和calico ip pool重叠

部署

kubectl apply -f https://docs.projectcalico.org/v3.0/getting-started/kubernetes/installation/hosted/kubeadm/1.7/calico.yaml

Kubernetes 数据存储托管安装(不需要etcd)

依赖

  • 暂时不支持ipam,推荐使用 host-local ipam与pod cidr结合使用
  • 默认使用node-to-node mesh模式
  • k8s1.7+
  • 配置使用CNI
  • controller-manager配置cluster-cidr

部署

# rbac
kubectl create -f https://docs.projectcalico.org/v3.0/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml # 部署
kubectl create -f https://docs.projectcalico.org/v3.0/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml

仅使用网络策略

kubectl create -f https://docs.projectcalico.org/v3.0/getting-started/kubernetes/installation/hosted/kubernetes-datastore/policy-only/1.7/calico.yaml

canal

canal旨在让用户能够轻松地将Calico和flannel网络作为一个统一的网络解决方案进行部署.

kubectl apply -f https://raw.githubusercontent.com/projectcalico/canal/master/k8s-install/1.7/rbac.yaml
kubectl apply -f https://raw.githubusercontent.com/projectcalico/canal/master/k8s-install/1.7/canal.yaml

配置

环境设置

# etcd数据存储 export ETCD_ENDPOINTS=http://xxx:2379 # k8s数据存储 export DATASTORE_TYPE=kubernetes KUBECONFIG=~/.kube/config

typha模式

k8s数据存储模式超过50各节点推荐启用typha,Typha组件可以帮助Calico扩展到大量的节点,而不会对Kubernetes API服务器造成过度的影响。 修改typha_service_name "none"改为"calico-typha"

禁用snat

calicoctl get ipPool -o yaml | sed 's/natOutgoing: true/natOutgoing: false/g' | calicoctl apply -f -

关闭node-to-node mesh (节点网络全互联)

cat << EOF
apiVersion: projectcalico.org/v3
kind: BGPConfiguration
metadata:
 name: default
spec:
 logSeverityScreen: Info
 nodeToNodeMeshEnabled: false
 asNumber: 64512
EOF | calicoctl apply -f -

calicoctl node status

创建IP Pool

calicoctl get ippool default-ipv4-ippool -o yaml

配置bird服务

yum install bird
service bird start

cat >> /etc/bird.conf < EOF
log syslog { debug, trace, info, remote, warning, error, auth, fatal, bug };
log stderr all; # Override router ID
router id 172.26.6.1;


filter import_kernel { if ( net != 0.0.0.0/0 ) then {
 accept; }
reject; } # Turn on global debugging of all protocols
debug protocols all; # This pseudo-protocol watches all interface up/down events.
protocol device {
 scan time 2; # Scan interfaces every 2 seconds }

protocol bgp {
 description "172.26.6.2"; local as 64512;
 neighbor 172.26.6.2 as 64512;
 multihop;
 rr client;
 graceful restart; import all; export all; }
protocol bgp {
 description "172.26.6.3"; local as 64512;
 neighbor 172.26.6.3 as 64512;
 multihop;
 rr client;
 graceful restart; import all; export all; }
EOF

IP-IN-IP

calicoctl get ippool default-ipv4-ippool -o yaml > pool.yaml
# 修改Off/Always/CrossSubnet
calicoctl apply -f pool.yaml
例: # 所有工作负载

$ calicoctl apply -f - << EOF
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
 name: ippool-ipip-1
spec:
 cidr: 192.168.0.0/16
 ipipMode: Always
 natOutgoing: true
EOF

# CrossSubnet

$ calicoctl apply -f - << EOF
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
 name: ippool-cs-1
spec:
 cidr: 192.168.0.0/16
 ipipMode: CrossSubnet
 natOutgoing: true
EOF


#通过修改配置文件环境变量
CALICO_IPV4POOL_IPIP 参数值 Off, Always, CrossSubnet 如果您的网络结构执行源/目标地址检查,并在未识别这些地址时丢弃流量,则可能需要启用工作负载间流量的IP-in-IP封装

bgp peer

查看状态

calicoctl node status

配置全局 bgp peer(rr)

cat << EOF | calicoctl create -f -
apiVersion: projectcalico.org/v3
kind: BGPPeer
metadata:
 name: bgppeer-global-3040
spec:
 peerIP: 172.26.6.1
 asNumber: 64567
EOF

# 删除
$ calicoctl delete bgpPeer 172.26.6.1

特定 BGP peer

$ cat << EOF | calicoctl create -f -
apiVersion: projectcalico.org/v3
kind: BGPPeer
metadata:
 name: bgppeer-node-aabbff
spec:
 peerIP: aa:bb::ff
 node: node1
 asNumber: 64514
EOF

calicoctl delete bgpPeer aa:bb::ff --scope=node --node=node1
calicoctl get bgpPeer
本文转自kubernetes中文社区-k8s使用calico网络

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
k8s与网络--Flannel源码分析
之前在k8s与网络--Flannel解读一文中,我们主要讲了Flannel整体的工作原理。今天主要针对Flannel v0.10.0版本进行源码分析。首先需要理解三个比较重要的概念: 网络(Network):整个集群中分配给 flannel 要管理的网络地址范围 子网(Subnet):flanne.
1633 0
如何使用浏览器网络监视工具进行黑客攻击
本文讲的是如何使用浏览器网络监视工具进行黑客攻击,在上一篇《重构后的Firefox网络监视工具,里边加了什么黑科技?》中,除了深入了解重构之后的网络监视器工具,我们还了解到,使用Web标准构建开发工具使我们能够在不同的环境中运行它们比如加载在Firefox Developer Toolbox中,或者作为标准Web应用程序加载到浏览器选项卡中。
1179 0
【图像分类】记录一个天坑:二分类网络使用CrossEntropyLoss,loss一直在0.69不收敛的问题
【图像分类】记录一个天坑:二分类网络使用CrossEntropyLoss,loss一直在0.69不收敛的问题
16 0
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
8353 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
11407 0
K8S网络排故障一则--iptables规则
这个故障源起来在k8s上同时安装ceph群集(测试的时候机器不多啊) 当这两者都OK之后,原来k8s上的服务实例,则有的通,有的不通了。 ==================== 所有可能的故障点,flannel,kubelet,kubeproxy都排查过之后, 定位在Iptable, 但net.ipv4.ip_forward = 1这种配置我是有的。
1860 0
如何查看K8S的网络是否完好
今天工作中遇到这个问题, 检查从以下几个方面入手。 一,查看各个POD的LOG,如果有错误,则要解决了再继续 二,登陆各个POD之间,互相要能PING通。 三,在物理节点上可以PING通SERVICE IP + PORT 四,在POD内部,可以PING通SERVICE IP + PORT及SERVICE NAME +PORT。
1914 0
Eclipse Paho:MQTT Client C的使用
Eclipse Paho:MQTT Client C的使用
42 0
在K8S里使用filebeat作为sidecar收集nginx日志
通过sidecar方法进行接入,与提供日志的容器部署在同一个pod里,主要是配置statefulset里的containers和configmap里的filebeat.yaml 1.把nginx的日志文件挂载在access_log这个volume里,同时在filebeat这个pod里也挂载access_log这个volume 2.filebeat通过subpath的方法挂载单独一个filebeat.yml到/usr/share/filebeat/filebeat.yml。注意,如果不用subpath挂载单个文件的话,是会覆盖掉/usr/share/filebeat/目录的 3.configm
53 0
+关注
651
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载