使用 KubeKey 安装部署 Kubernetes 与 Kube-OVN
作者简介:林瑞超,锐捷网络开发工程师, KubeSphere 社区 contributor, 关注Kube-OVN, Cilium 等容器网络相关技术
背景
KubeKey 是 KubeSphere V3.0 新增的安装方式,用户可以一键部署 Kubernetes 和 KubeSphere。Kube-OVN 是一款基于 OVS/OVN 的 Kubernetes 网络编排系统。本文将为大家介绍如何使用 KubeKey 来安装部署 Kubernetes 和 Kube-OVN。
KubeKey 简介
KubeKey 是 Kubernetes 和 KubeSphere 的新一代 Installer(安装程序),旨在更方便、快速、高效和灵活地安装 Kubernetes 与 KubeSphere。KubeKey 摒弃了原来 Ansible 带来的依赖问题,用 Go 重写,支持单独 Kubernetes 或整体安装 KubeSphere。它也是扩展和升级集群的有效工具。
Kube-OVN 简介
Kube-OVN 是一款开源企业级云原生 Kubernetes 容器网络编排系统,它通过将 OpenStack 领域成熟的网络功能平移到 Kubernetes,极大增强了 Kubernetes 容器网络的安全性、可运维性、管理性和性能。在上个月 Kube-OVN 加入了 CNCF Sandbox。
准备工作
- 满足 KubeKey 的安装条件
- 满足 Kube-OVN 的安装条件(主要是内核版本需要满足要求)
安装步骤
- 下载 KubeKey
如果能正常访问 GitHub/Googleapis,可以从 GitHub 发布页面下载 KubeKey 或直接使用以下命令。
curl -sfL https://get-kk.kubesphere.io | VERSION=v1.0.1 sh -
如果访问 GitHub/Googleapis 受限 先执行以下命令以确保从正确的区域下载 KubeKey。
export KKZONE=cn
执行以下命令下载 KubeKey。
curl -sfL https://get-kk.kubesphere.io | VERSION=v1.0.1 sh -
下载 KubeKey 后,如果将其传至新的机器,且访问 Googleapis 同样受限,在执行以下步骤之前务必再次执行
export KKZONE=cn
命令。 执行以上命令会下载最新版 KubeKey (v1.0.1),可以修改命令中的版本号下载指定版本。
为 kk
添加可执行权限:
chmod +x kk
创建示例配置文件:
./kk create cluster --with-kubernetes v1.17.9
完整的文档请参考官方文档
- 修改生成的 config-sample.yaml 文件, 把网络插件改成 Kube-OVN,配置如下:
apiVersion: kubekey.kubesphere.io/v1alpha1
kind: Cluster
metadata:name: example
spec:hosts:- {name: node1, address: 192.168.0.183, internalAddress: 192.168.0.183, port: 22, user: root, password: Qcloud@123}roleGroups:etcd:- node1master:- node1worker:- node1controlPlaneEndpoint:domain: lb.kubesphere.localaddress: ""port: 6443kubernetes:version: v1.17.9imageRepo: kubesphereclusterName: cluster.localmasqueradeAll: falsemaxPods: 110nodeCidrMaskSize: 24proxyMode: ipvsnetwork:plugin: kubeovnkubeovn:joinCIDR: 100.64.0.0/16 #joinCIDR地址enableSSL: true #开启SSLenableMirror: true #是否开启流量镜像pingerExternalAddress: 114.114.114.114 #ping external地址networkType: geneve #网络类型, 可选geneve与vlan, 如果选择vlan, vlan网卡名称必须填写vlanInterfaceName: interface_name #vlan网卡名称vlanID: '100' #默认vlanIDdpdkMode: false #是否dpdk模式kubePodsCIDR: 10.233.64.0/18kubeServiceCIDR: 10.233.0.0/18registry:registryMirrors: []insecureRegistries: []privateRegistry: ""addons: []
在上面的 yaml 中 Kube-OVN 的配置可以不用填写,将使用默认的配置安装 Kube-OVN, 即配置可简化成如下:
network:plugin: kubeovnkubePodsCIDR: 10.233.64.0/18kubeServiceCIDR: 10.233.0.0/18
部署
./kk create cluster -f config-sample.yaml
在安装过程中,能看到 Kube-OVN 的部署信息,看到Congratulations
信息,表示集群已经安装成功了。
通过kubectl get pod -A
能看到 Kube-OVN 相关的 Pod 已经都正常运行
查看当前的子网kubectl get subnet
,能看到 join 子网与 ovn-default 子网:
如何使用 Kube-OVN
在 Kube-OVN 中通过子网组织 IP,一个或多个 Namespace 可以被绑定到一个子网中,这些 Namespace 下的 Pod 将会从该子网中分配 IP,并使用子网下的网络配置。如果 Pod 绑定的 Namespace 没有绑定子网,将使用默认子网 ovn-default 为其分配 IP 地址。 在 https://github.com/alauda/kube-ovn/wiki 上有关于 Kube-OVN 详细的使用教程,可移步 Kube-OVN 社区查看。
创建自定义子网
apiVersion: kubeovn.io/v1
kind: Subnet
metadata:name: ls1
spec:protocol: IPv4cidrBlock: 10.100.0.0/16 #设置子网网段excludeIps:- 10.100.0.1..10.100.0.10 #设置子网排除(不使用)范围gateway: 10.100.0.1 #设置子网的网关地址namespaces: #设置子网绑定的命名空间- ls1
子网的配置如上(相关字段的含义注释中有说明), kubectl apply
之后再kubectl get subnet
能看到子网已经创建出来,通过kubectl get subnet ls1 -o yaml
可以查看子网的状态是否可用。
创建 Pod 并绑定自定义子网
我们已经创建了子网 ls1 并绑定了命名空间 ls1, 接下来我们创建一个 Pod 并绑定 ls1 命名空间:
创建命名空间 kubectl create ns ns1
创建 Nginx Pod 并绑定 ls1 `kubectl run
通过上面两个步骤,Pod 已经创建出来了,并且分配的 IP 地址在排除地址范围外,通过kubectl get ip
可以查看 Pod 分配到的 IP 地址与 mac 地址等信息
本文由博客一文多发平台 OpenWrite 发布!
使用 KubeKey 安装部署 Kubernetes 与 Kube-OVN相关推荐
- Centos7 安装部署Kubernetes(k8s)集群过程
1.系统环境 服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.9 Docker version 20.10.12 x86_64 2.前言 如下图描述了软件部 ...
- 有史以来最详细 安装部署Kubernetes Dashboard (补充解决官方出现的一些RBAC CERT等问题)
安装部署Kubernetes Dashboard (补充解决官方出现的一些RBAC CERT等问题) 官方文档:https://github.com/kubernetes/dashboard 参考文章 ...
- 安装部署 Kubernetes 仪表板(Dashboard)
简介 Kubernetes 仪表板(Dashboard)是基于网页的 Kubernetes 用户界面. 你可以使用仪表板: 展示了 Kubernetes 集群中的资源状态信息和所有报错信息. 把容器应 ...
- 【k8s记录系列】实操kubeadm安装部署Kubernetes集群全过程 V1.20.5
首先感谢王跃辉我辉哥提供的技术支持,嘿嘿! 准备工具:VMware(已经启动好三台Linux服务器Centos7.x版本),远程连接工具putty,xshell等 如果还没有安装虚拟机,或者不知道怎么 ...
- 二进制安装部署 4 kubernetes集群---超详细教程
二进制安装部署kubernetes集群---超详细教程 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建完成后整理的个人心得,分享给大家~~~ 本文所需的安装包,都上传在我的网盘中,需要的可以 ...
- Kubernetes(k8s)安装部署+简单实用
Kubernetes安装部署 Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署.自动扩缩容.维护等功能. 使用Kubernetes可以: 自动化容器的部署和复制 ...
- DockerK8s---跟我一步步部署K8s(二进制安装部署)
文章目录 Docker&K8s---跟我一步步部署K8s(二进制安装部署) Kubernetes(K8s)概述 Kubernetes快速入门 四组基本概念 常见的K8s安装部署方式 准备工作 ...
- kubernetes安装部署(kubeadm方式亲测)
准备工作: 关闭防火墙 systemctl stop firewalld systemctl disable firewalld 关闭selinux sed -i 's/enforcing/disab ...
- 微软OpenPai平台部署安装(kubernetes 大数据和深度学习平台安装部署)
(1)特别注意,机器配置必须16/32核 64G内存,曾经在虚拟机上安装部署8核/28G内存走不出来.哪怕修改pod文件memory配置 (2)另外遇到镜像下载不出来建议先下载到本地 (3)操作系统u ...
最新文章
- LINUX进程调度分析源码,Linux 实时调度(源码分析)
- 商品评论html,商品评论列表.html
- android上line-height的问题
- 高并发编程-线程通信_使用wait和notify进行线程间的通信
- easyUI的引用顺序
- 一个操作系统的实现(1):分析linux下如何运行一个执行文件
- 如何不让FCKEditor自动添加P标签
- Opencv中Mat的data数据只定义为uchar*类型,
- Nacos集群部署说明
- Error:(1, 1) java: 非法字符: ‘\ufeff’
- Spring 静态代理+JDK动态代理和CGLIB动态代理
- Android SDK下载太慢
- verilog移位、取绝对值
- 视场(FOV)补偿与分辨率(Resolution)补偿
- Google I/O 2021: 在重要时刻提供帮助
- springboot框架下利用websocket实现即时通讯
- stm32培训视频,欢迎大家入门学习。
- java设置打印机默认纸张_java 打印设置打印A4 A5纸
- 前端工作随笔日记 Day04
- 早期对科学诞生贡献最大的学者:泰勒斯、毕达哥拉斯、亚里士多德和阿基米德。