calico分配网络使k8s节点指定固定网段
文章目录
- 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节点指定固定网段相关推荐
- Linux 实用指令 -- 网络配置(查看网络IP和网关、 ping 测试主机之间网络连通、Linux网络环境配置(指定固定ip))
文章目录 1. 网络配置 1.1 查看网络IP和网关 1.1.1 查看虚拟网络编辑器 1.1.2 这里可以修改ip地址(修改虚拟网络的ip) 1.1.3 这里可以修改网关(虚拟网络的网关) 1.1.4 ...
- 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 ...
- 总结 Underlay 和 Overlay 网络,在k8s集群实现underlay网络,网络组件flannel vxlan/ calico IPIP模式的网络通信流程,基于二进制实现高可用的K8S集群
1.总结Underlay和Overlay网络的的区别及优缺点 Overlay网络: Overlay 叫叠加网络也叫覆盖网络,指的是在物理网络的 基础之上叠加实现新的虚拟网络,即可使网络的中的容器可 ...
- Kubernetes K8S节点选择(nodeName、nodeSelector、nodeAffinity、podAffinity、Taints以及Tolerations用法)
感谢以下文章的支持: 容器编排系统K8s之Pod Affinity - Linux-1874 - 博客园 容器编排系统K8s之节点污点和pod容忍度 - Linux-1874 - 博客园 Kubern ...
- 关于 kubernetes网络(CNI规范)中Calico,NetworkPolicy(网络策略)方面的一些笔记
写在前面 学习k8s遇到整理笔记 博文内容主要涉及 K8s网络理论体系简述 K8s中Calico网络方案容器跨主机通信过程Demo K8s中Calico的实现方案 K8s中网络策略方式:egress和 ...
- 完整部署CentOS7.2+OpenStack+kvm 云平台环境(3)--为虚拟机指定固定ip
之前在测试环境(centos7.2)上部署了openstack云平台(完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建),openstack在neutron组网 ...
- 【云原生 • Kubernetes】认识 k8s 网络、外部网络访问 k8s 内部服务
目录 一.认识 Kubernetes 网络 二.外部网络如何访问 k8s 内部服务 1. NodePort 2. Load Balancer 3. Ingress 一.认识 Kubernetes 网络 ...
- kubernetes学习笔记之十三:基于calico的网络策略入门
一..安装calico [root@k8s-master01 ~]# kubectl apply -f https://docs.projectcalico.org/v3.3/getting-star ...
- Zigbee协调器主动使终端节点退网
我使用ZDP_MgmtLeaveReq()这个函数来让已知短地址的终端退网,代码如下:我这样使用的结果是,可以将节点退网,节点上也需要做一些配置.我在函数里禁止节点重连,但是节点退网后会获取到新的短地 ...
最新文章
- IT旅途——程序员面试经验分享
- 【Linux系统编程】Linux进程管理
- c++ primer 5th ,习题11.23自己编写答案
- java数据库的优化_用Java向数据库中插入大量数据时的优化
- python async_python async with和async for的使用
- 工作281:时间戳转换问题
- quartz mysql索引_分布式系统中的定时任务全解(二)
- 如何在计算机桌面上增添word,怎么在桌面添加Word文档
- 七.激光SLAM框架学习之A-LOAM框架---速腾Robosense-16线雷达室内建图
- oracle数据库的重复数据处理
- wp文件转shp_MapGIS完美转shp攻略
- 2021年冬季PAT乙级题解(C/C++语言)
- 总结在mac电脑上安装brew
- JavaScript - 简介
- 项目管理中的各种技术,分析图(简介+应用子过程)
- Linux内核数据学习总结
- MarkDown 排版测试
- 华为校园招聘技术类笔试面试经验(摘)
- UE4 插件开发流程与插件打包问题
- 3D点云处理:半径滤波器中值滤波器