使用 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:
- node1
master:
- node1
worker:
- node1
controlPlaneEndpoint:
domain: lb.kubesphere.local
address: ""
port: 6443
kubernetes:
version: v1.17.9
imageRepo: kubesphere
clusterName: cluster.local
masqueradeAll: false
maxPods: 110
nodeCidrMaskSize: 24
proxyMode: ipvs
network:
plugin: kubeovn
kubeovn:
joinCIDR: 100.64.0.0/16 #joinCIDR地址
enableSSL: true #开启SSL
enableMirror: true #是否开启流量镜像
pingerExternalAddress: 114.114.114.114 #ping external地址
networkType: geneve #网络类型, 可选geneve与vlan, 如果选择vlan, vlan网卡名称必须填写
vlanInterfaceName: interface_name #vlan网卡名称
vlanID: '100' #默认vlanID
dpdkMode: false #是否dpdk模式
kubePodsCIDR: 10.233.64.0/18
kubeServiceCIDR: 10.233.0.0/18
registry:
registryMirrors: []
insecureRegistries: []
privateRegistry: ""
addons: []
在上面的 yaml 中 Kube-OVN 的配置可以不用填写,将使用默认的配置安装 Kube-OVN, 即配置可简化成如下:
network:
plugin: kubeovn
kubePodsCIDR: 10.233.64.0/18
kubeServiceCIDR: 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: IPv4
cidrBlock: 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 地址等信息

使用 KubeKey 安装部署 Kubernetes 与 Kube-OVN的更多相关文章
- Centos7 安装部署Kubernetes(k8s)集群
目录 一.系统环境 二.前言 三.Kubernetes 3.1 概述 3.2 Kubernetes 组件 3.2.1 控制平面组件 3.2.2 Node组件 四.安装部署Kubernetes集群 4. ...
- 安装部署 Kubernetes 集群
安装部署 Kubernetes 集群 阅读目录: 准备工作 部署 Master 管理节点 部署 Minion 工作节点 部署 Hello World 应用 安装 Dashboard 插件 安装 Hea ...
- centos7使用kubeadm安装部署kubernetes 1.14
应用背景: 截止目前为止,高热度的kubernetes版本已经发布至1.14,在此记录一下安装部署步骤和过程中的问题排查. 部署k8s一般两种方式:kubeadm(官方称目前已经GA,可以在生产环境使 ...
- 使用 Kubeadm 安装部署 Kubernetes 1.12.1 集群
手工搭建 Kubernetes 集群是一件很繁琐的事情,为了简化这些操作,就产生了很多安装配置工具,如 Kubeadm ,Kubespray,RKE 等组件,我最终选择了官方的 Kubeadm 主要是 ...
- Kubeadm 安装部署 Kubernetes 集群
阅读目录: 准备工作 部署 Master 管理节点 部署 Minion 工作节点 部署 Hello World 应用 安装 Dashboard 插件 安装 Heapster 插件 后记 相关文章:Ku ...
- Helm 安装部署Kubernetes的dashboard
Kubernetes Dashboard 是 k8s集群的一个 WEB UI管理工具,代码托管在 github 上,地址:https://github.com/kubernetes/dashboard ...
- (转)实验文档1:跟我一步步安装部署kubernetes集群
实验环境 基础架构 主机名 角色 ip HDSS7-11.host.com k8s代理节点1 10.4.7.11 HDSS7-12.host.com k8s代理节点2 10.4.7.12 HDSS7- ...
- 二进制安装部署kubernetes集群---超详细教程
本文收录在容器技术学习系列文章总目录 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建完成后整理的个人心得,分享给大家~~~ 本文所需的安装包,都上传在我的网盘中,需要的可以打赏博主一杯咖啡钱 ...
- kubeadm安装部署kubernetes 1.11.3(单主节点)
由于此处docker代理无法使用,因此,请各位设置有效代理进行部署,勿使用文档中的docker代理.整体部署步骤不用改动.谢谢各位支持. 1.部署背景 操作系统版本:CentOS Linux rele ...
- 使用 kubeadm 安装部署 kubernetes 1.9-部署heapster插件
1.先到外网下载好镜像倒进各个节点 2.下载yaml文件和创建应用 mkdir -p ~/k8s/heapster cd ~/k8s/heapster wget https://raw.githubu ...
随机推荐
- [rCore学习笔记 021]多道程序与分时任务
写在前面 本随笔是非常菜的菜鸡写的.如有问题请及时提出. 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 导读 ...
- 绝对要收藏!!! JavaEE开发常用注解
目录 前言 1.Mybatis常用注解 2.SpringMVC常用注解 3.Spring常用注解 1. IoC注解 2. DI注解 3. 事务注解 4.SpringBoot常用注解 5.Lombok注 ...
- 关于Isaac Gym的两个版本比较:IsaacGymEnvs/omni.isaac.gym
原文地址: https://zhuanlan.zhihu.com/p/590468555 重点: IsaacGymEnvs (IGE)和 omni.isaac.gym (OIG)是两个东西. 原文内容 ...
- 强化学习:一种新的并行算法下的参数同步更新方式——半异步更新方式——( 同步、异步 -> 半异步 )
Abstract: 并行算法下的参数同步方式一般有同步更新和异步更新两种方式,本文在此基础之上提出了一种新的参数同步方式--半异步更新方式. Introduction: 这里用神经网络举例子,也就是神 ...
- Mysql 不用Json存储 List<Long>的方式
public static void main(String[] args) { List<Long> idList = new ArrayList<>(); for (int ...
- 处理一直显示npm WARN using –force Recommended protections disabled.的问题
使用 npm config set force false 可以消除.
- 【工程应用十一】基于PatchMatch算法的图像修复研究(inpaint)。
这个东西是个非常古老的算法了,大概是2008年的东西,参考资料也有很多,不过基本上都是重复的.最近受一个朋友的需求,前后大概用了二十多天时间去研究,也有所成果,在这里简单的予以记录. 图像修 ...
- 给vue+element-ui动态设置主题色(包括外链样式、内联样式、行内样式)
基本思路 实现思路:实现一个mixins混入的主题js即theme.js,注册到全局下.使用el-color-picker组件切换颜色的时候,把颜色值传递到根root下,在根实例下监听主题色的变化来更 ...
- CSS & JS Effect – Virtual Scrolling
前言 我正在写 Angular CDK Scrolling 教程,它里面有一个 Virtual Scrolling 功能.借此机会,我想顺便写一篇纯 Sass & TS 的版本作为学习. Vi ...
- Angular 18+ 高级教程 – HttpClient
前言 HttpClient 是 Angular 对 XMLHttpRequest 和 Fetch 的封装. HttpClient 的 DX (Developer Experience) 比 XMLHt ...