文章目录

  • calico分配网络使k8s节点指定固定网段
    • 1.配置calicoctl
      • 1.1 下载calicoctl
      • 1.2 配置calicoctl
      • 1.3 测试calicoctl
    • 2.配置ippool
    • 3.添加ippool
    • 4.创建pod测试ippool网段划分
    • 5.核心交换机上添加静态路由
    • 6.测试

calico分配网络使k8s节点指定固定网段

需求:测试环境的k8s的pod网络需要和阿里云zk通信(10.188.0.0)(pod的ip注册到zk),这里要固定node节点docker网段,避免当node节点重启后docker的网段会改变,避免对应的路由也需要重新指定网络。

ip地址 指定网段 备注
10.188.28.7 10.188.248.0/22 固定地址段
10.188.28.8 10.188.252.0/22 固定地址段

1.配置calicoctl

1.1 下载calicoctl
# wget https://github.com/projectcalico/calicoctl/releases/download/v3.5.4/calicoctl -O /usr/bin/calicoctl
# chmod  +x /usr/local/bin/calicoctl
1.2 配置calicoctl
# cat /etc/calico/calicoctl.cfg
apiVersion: projectcalico.org/v3
kind: CalicoAPIConfig
metadata:
spec:datastoreType: "kubernetes"kubeconfig: "/root/.kube/config"
1.3 测试calicoctl
# calicoctl get ippool
NAME                       CIDR              SELECTOR
default-ipv4-ippool        192.168.0.0/16    all() # calicoctl get ippool -o json default-ipv4-ippool
{"kind": "IPPool","apiVersion": "projectcalico.org/v3","metadata": {"name": "default-ipv4-ippool","uid": "e0b3c2f2-6d2c-4552-95df-cb75506b4e65","resourceVersion": "1613","creationTimestamp": "2021-10-26T11:11:00Z"},"spec": {"cidr": "192.168.0.0/16","ipipMode": "Always","natOutgoing": true,"blockSize": 26,"nodeSelector": "all()"}
}

2.配置ippool

使分配到k8s02上的pod,分配的ip池是10.188.252.0/22,分配到k8s01上的pod,分配的ip池是10.188.248.0/22

# cat 248-ippool.yaml
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:name: 248-ipv4pool
spec:blockSize: 26cidr: 10.188.248.0/22ipipMode: AlwaysnodeSelector: calico-network == 'k8s01'natOutgoing: true
# cat 252-ippool.yaml
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:name: 252-ipv4pool
spec:blockSize: 26cidr: 10.188.252.0/22ipipMode: AlwaysnodeSelector: calico-network == 'k8s02'natOutgoing: true

下一步给node节点打上标签

# kubectl  label nodes bj-smzy-ce-k8s01-28-7 calico-network=k8s01
# kubectl  label nodes bj-smzy-ce-k8s02-28-8 calico-network=k8s02
# kubectl get nodes --show-labels #查看label是否添加成功

3.添加ippool

# calicoctl create -f 248-ippool.yaml
# calicoctl create -f 252-ippool.yaml
# calicoctl get ippool
NAME           CIDR              SELECTOR
248-ipv4pool   10.188.248.0/22   calico-network == 'k8s01'
252-ipv4pool   10.188.252.0/22   calico-network == 'k8s02'
default-ipv4-ippool   10.5.0.0/16   all()

删除默认的ippool

# kubectl delete  ippool default-ipv4-ippool

4.创建pod测试ippool网段划分

# cat  nginx-deplay.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deployment
spec:selector:matchLabels:app: nginxreplicas: 10template:metadata:labels:app: nginx#annotations: #可以不添加注释(已经把默认ipool删除)#  "cni.projectcalico.org/ipv4pools": "[\"248-ipv4pool\",\"252-ipv4pool\"]"spec:containers:- name: nginximage: nginx:alpineports:- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:name: nginx-service
spec:selector:app: nginxports:- protocol: TCPport: 80targetPort: 80# kubectl   create  -f nginx-deplay
# kubectl   get  pod  -o wide
NAME                                READY   STATUS    RESTARTS   AGE    IP               NODE                    NOMINATED NODE   READINESS GATES
nginx-deployment-7fb7fd49b4-5w982   1/1     Running   0          117m   10.188.252.10    bj-smzy-ce-k8s02-28-8   <none>           <none>
nginx-deployment-7fb7fd49b4-8qqrx   1/1     Running   0          117m   10.188.248.205   bj-smzy-ce-k8s01-28-7   <none>           <none>
nginx-deployment-7fb7fd49b4-hnw76   1/1     Running   0          117m   10.188.248.208   bj-smzy-ce-k8s01-28-7   <none>           <none>
nginx-deployment-7fb7fd49b4-jsq2r   1/1     Running   0          117m   10.188.252.15    bj-smzy-ce-k8s02-28-8   <none>           <none>
nginx-deployment-7fb7fd49b4-kbwqz   1/1     Running   0          117m   10.188.248.206   bj-smzy-ce-k8s01-28-7   <none>           <none>
nginx-deployment-7fb7fd49b4-klbhj   1/1     Running   0          117m   10.188.252.14    bj-smzy-ce-k8s02-28-8   <none>           <none>
nginx-deployment-7fb7fd49b4-mwd7z   1/1     Running   0          117m   10.188.252.12    bj-smzy-ce-k8s02-28-8   <none>           <none>
nginx-deployment-7fb7fd49b4-s7rwx   1/1     Running   0          117m   10.188.252.11    bj-smzy-ce-k8s02-28-8   <none>           <none>
nginx-deployment-7fb7fd49b4-sgr6l   1/1     Running   0          117m   10.188.248.207   bj-smzy-ce-k8s01-28-7   <none>           <none>
nginx-deployment-7fb7fd49b4-zhrfz   1/1     Running   0          117m   10.188.252.13    bj-smzy-ce-k8s02-28-8   <none>           <none>

可以看到创建的pod的ip地址

分配到bj-smzy-ce-k8s01-28-7节点的pod是10.188.248.0/22段

分配到bj-smzy-ce-k8s02-28-8节点的pod是10.188.252.0/22段

注意:当新节点接入集群时,需要再次添加新节点的网段的ippool,不然分配的pod落在新节点上是启动不成功的(无法分配pod的ip)

5.核心交换机上添加静态路由

# ip route 10.188.248.0/22(node的docker网段) 10.188.28.7(node节点ip)
# ip route 10.188.252.0/22(node的docker网段) 10.188.28.8(node节点ip)

查看node节点的路由,如若不通信,还需要手动指定路由

# route add -net 10.180.0.0/16 gw 10.188.28.1

6.测试

在10.180.0.0网段的机器上ping podIP

在pod里ping 10.180.0.0网段的ip

calico分配网络使k8s节点指定固定网段相关推荐

  1. Linux 实用指令 -- 网络配置(查看网络IP和网关、 ping 测试主机之间网络连通、Linux网络环境配置(指定固定ip))

    文章目录 1. 网络配置 1.1 查看网络IP和网关 1.1.1 查看虚拟网络编辑器 1.1.2 这里可以修改ip地址(修改虚拟网络的ip) 1.1.3 这里可以修改网关(虚拟网络的网关) 1.1.4 ...

  2. Kubernetes(k8s)集群部署七、k8s网络通信+service扩展ingress(TLS,认证,地址重写)calico网络插件(允许指定pod访问服务,禁止其他namespace访问服务)

    k8s网络通信 k8s网络通信 1.容器间通信 2.pod之间的通信 2.1同一节点的pod 2.2不同节点的pod之间的通信 flannel网络原理 flannel支持多种后端: 3.pod和ser ...

  3. 总结 Underlay 和 Overlay 网络,在k8s集群实现underlay网络,网络组件flannel vxlan/ calico IPIP模式的网络通信流程,基于二进制实现高可用的K8S集群

    1.总结Underlay和Overlay网络的的区别及优缺点 Overlay网络:  Overlay 叫叠加网络也叫覆盖网络,指的是在物理网络的 基础之上叠加实现新的虚拟网络,即可使网络的中的容器可 ...

  4. Kubernetes K8S节点选择(nodeName、nodeSelector、nodeAffinity、podAffinity、Taints以及Tolerations用法)

    感谢以下文章的支持: 容器编排系统K8s之Pod Affinity - Linux-1874 - 博客园 容器编排系统K8s之节点污点和pod容忍度 - Linux-1874 - 博客园 Kubern ...

  5. 关于 kubernetes网络(CNI规范)中Calico,NetworkPolicy(网络策略)方面的一些笔记

    写在前面 学习k8s遇到整理笔记 博文内容主要涉及 K8s网络理论体系简述 K8s中Calico网络方案容器跨主机通信过程Demo K8s中Calico的实现方案 K8s中网络策略方式:egress和 ...

  6. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(3)--为虚拟机指定固定ip

    之前在测试环境(centos7.2)上部署了openstack云平台(完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建),openstack在neutron组网 ...

  7. 【云原生 • Kubernetes】认识 k8s 网络、外部网络访问 k8s 内部服务

    目录 一.认识 Kubernetes 网络 二.外部网络如何访问 k8s 内部服务 1. NodePort 2. Load Balancer 3. Ingress 一.认识 Kubernetes 网络 ...

  8. kubernetes学习笔记之十三:基于calico的网络策略入门

    一..安装calico [root@k8s-master01 ~]# kubectl apply -f https://docs.projectcalico.org/v3.3/getting-star ...

  9. Zigbee协调器主动使终端节点退网

    我使用ZDP_MgmtLeaveReq()这个函数来让已知短地址的终端退网,代码如下:我这样使用的结果是,可以将节点退网,节点上也需要做一些配置.我在函数里禁止节点重连,但是节点退网后会获取到新的短地 ...

最新文章

  1. IT旅途——程序员面试经验分享
  2. 【Linux系统编程】Linux进程管理
  3. c++ primer 5th ,习题11.23自己编写答案
  4. java数据库的优化_用Java向数据库中插入大量数据时的优化
  5. python async_python async with和async for的使用
  6. 工作281:时间戳转换问题
  7. quartz mysql索引_分布式系统中的定时任务全解(二)
  8. 如何在计算机桌面上增添word,怎么在桌面添加Word文档
  9. 七.激光SLAM框架学习之A-LOAM框架---速腾Robosense-16线雷达室内建图
  10. oracle数据库的重复数据处理
  11. wp文件转shp_MapGIS完美转shp攻略
  12. 2021年冬季PAT乙级题解(C/C++语言)
  13. 总结在mac电脑上安装brew
  14. JavaScript - 简介
  15. 项目管理中的各种技术,分析图(简介+应用子过程)
  16. Linux内核数据学习总结
  17. MarkDown 排版测试
  18. 华为校园招聘技术类笔试面试经验(摘)
  19. UE4 插件开发流程与插件打包问题
  20. 3D点云处理:半径滤波器中值滤波器

热门文章

  1. seo和python_python和seo优化关系
  2. API服务平台,服务管理与发布平台
  3. Ubuntu14.04使用内存盘
  4. 第一章.程序设计基础
  5. 音频编辑软件哪个好用
  6. 框架设计:浅谈ECS设计思想(一)
  7. WindowsLinux cmd 常用命令
  8. html表格单行溢出省略号,单行、多行文本溢出显示省略号(css、js两种方法)
  9. 手把手编译基于恩智浦MCAL的工程
  10. PE解决蓝屏问题,蓝屏码:0X0000009A