主要功能

  • 安装 Kubernetes 集群

    • 支持在任何基础设施上部署 Kubernetes,提供在线与离线安装,支持添加 GPU 节点
  • Kubernetes 资源管理
    • 提供 Web 控制台对接 Kubernetes 原生 API 快速创建与管理 Kubernetes 资源,内置多维度的可观测性
  • 多租户管理
    • 提供统一的认证鉴权与细粒度的基于角色的授权系统,支持对接 AD/LDAP

硬件要求

  • 官方建议

    • all-in-one(基于Linux系统,部署Kubernetes集群以及KubeSphere平台)

      • 最小化:2C4G
      • 开启全部组件:8C16G
    • 基于Kubernetes集群
      • 最小化1C2G(kubernetes集群,master节点是需要2C2G的配置要求,node节点是可以1C2G的)

插件性能需求

https://kubesphere.io/zh/docs/pluggable-components/overview/

Kubernetes版本要求

安装 KubeSphere v3.1.0 的建议 Kubernetes 版本:v1.17.9,v1.18.8,v1.19.8 以及 v1.20.4。

如果不指定 Kubernetes 版本,KubeKey 将默认安装 Kubernetes v1.19.8

KubeSphere 版本 受支持的 Kubernetes 版本
v3.1.0 v1.17.0,v1.17.4,v1.17.5,v1.17.6,v1.17.7,v1.17.8,v1.17.9,v1.18.3,v1.18.5,v1.18.6,v1.18.8,v1.19.0,v1.19.8,v1.19.9,v1.20.4

所以,如果想在现有的Kubernetes集群上部署KubeSphere,Kubernetes的版本不能低于1.17.0

IP 配置 系统版本
192.168.72.77 3C5G CentOS 7.6
192.168.72.78 3C5G CentOS 7.6
192.168.72.79 3C5G CentOS 7.6

如果不是外网服务器,firewalld服务可以直接关掉,需要关闭selinux服务,重启后才会生效

selinux的关闭方式:sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

  1. # cat /etc/redhat-release
  2. CentOS Linux release 7.6.1810 (Core)
  3. # systemctl status firewalld.service | grep active
  4. Active: inactive (dead)
  5. # sestatus
  6. SELinux status: disabled

配置主机之间的免密

  1. # ssh-keygen
  2. # ssh-copy-id 192.168.72.78
  3. # ssh-copy-id 192.168.72.79

安装所需依赖

  • Kubernetes 版本 < 1.18

    • 官方建议都安装以下依赖
  • Kubernetes 版本 ≥ 1.18
    • socat 和 conntrack 是必须安装的依赖
    • ebtables 和 ipset 是建议安装的
  • 小孩子才做选择,我全都要
  • 三个节点都需要安装依赖
  1. # yum install -y socat conntrack ebtables ipset

下载KubeKey

  • Github下载是真的难顶,除非你可以连接外网(还好我有一个香港的服务,才下载下来这个KubeKey)
  • 我已经上传到百度云网盘了,只有14MB
  • 链接:https://pan.baidu.com/s/1_f6WFgZZ6OwQ5GDo7lmvwg
    提取码:yfui
  • 如果连接Github不方便,并且想要使用kk命令来部署Kubernetes集群,建议使用命令export KKZONE=cn,这样,拉取的镜像都会是国内的镜像站,拉取速度会快很多很多
  1. # export KKZONE=cn
  2. # curl -sfL https://get-kk.kubesphere.io | VERSION=v1.1.0 sh -
  3. # chmod +x kk

创建Kubernetes集群以及KubeSphere

kk命令使用方式

创建一个配置文件模板,执行后,会在当前目录生成一个config-sample.yaml文件

修改config-sample.yaml文件,可以创建多节点Kubernetes集群,并且开启自定义插件
开启自定义插件,可以参考官方文档:启用可插拔组件
可以先部署最小化的机器,然后在web页面开启自定义的插件

  1. # ./kk create config
  1. apiVersion: kubekey.kubesphere.io/v1alpha1
  2. kind: Cluster
  3. metadata:
  4. name: sample
  5. spec:
  6. hosts:
  7. - {name: node1, address: 172.16.0.2, internalAddress: 172.16.0.2, user: ubuntu, password: Qcloud@123}
  8. - {name: node2, address: 172.16.0.3, internalAddress: 172.16.0.3, user: ubuntu, password: Qcloud@123}
  9. roleGroups:
  10. etcd:
  11. - node1
  12. master:
  13. - node1
  14. worker:
  15. - node1
  16. - node2
  17. controlPlaneEndpoint:
  18. domain: lb.kubesphere.local
  19. address: ""
  20. port: 6443
  21. kubernetes:
  22. version: v1.19.8
  23. imageRepo: kubesphere
  24. clusterName: cluster.local
  25. network:
  26. plugin: calico
  27. kubePodsCIDR: 10.233.64.0/18
  28. kubeServiceCIDR: 10.233.0.0/18
  29. registry:
  30. registryMirrors: []
  31. insecureRegistries: []
  32. addons: []

创建集群

  1. # ./kk create cluster -h
  2. -f, --filename string Path to a configuration file
  3. --with-kubernetes string Specify a supported version of kubernetes (default "v1.19.8")
  4. --with-kubesphere Deploy a specific version of kubesphere (default v3.1.0)

只取了几条参数,其他的,可以自己查看

  • -f, --filename:指定配置文件进行部署
  • --with-kubernetes:指定部署的kubernetes版本,不指定版本,默认安装1.19.8版本
  • --with-kubesphere:指定部署的kubesphere版本,不指定版本,默认安装3.1.0版本

如果执行./kk create cluster --with-kubesphere 则会安装默认的Kubernetes集群和KubeSphere服务

修改配置文件

  1. apiVersion: kubekey.kubesphere.io/v1alpha1
  2. kind: Cluster
  3. metadata:
  4. name: sample
  5. spec:
  6. hosts:
  7. - {name: k8s-node1, address: 192.168.72.77, internalAddress: 192.168.72.77, user: root, password: 123.com}
  8. - {name: k8s-node2, address: 192.168.72.78, internalAddress: 192.168.72.78, user: root, password: 123.com}
  9. - {name: k8s-node3, address: 192.168.72.79, internalAddress: 192.168.72.79, user: root, password: 123.com}
  10. roleGroups:
  11. etcd:
  12. - k8s-node1
  13. master:
  14. - k8s-node1
  15. worker:
  16. - k8s-node1
  17. - k8s-node2
  18. - k8s-node3
  19. controlPlaneEndpoint:
  20. domain: lb.kubesphere.local
  21. #address: "192.168.72.77"
  22. address: ""
  23. port: 6443
  24. kubernetes:
  25. version: v1.20.4
  26. imageRepo: kubesphere
  27. clusterName: cluster.local
  28. network:
  29. plugin: calico
  30. kubePodsCIDR: 10.233.64.0/18
  31. kubeServiceCIDR: 10.233.0.0/18
  32. registry:
  33. registryMirrors: []
  34. insecureRegistries: []
  35. addons: []

k8s-node1自行设定,设定后,这个将会变成主机名

开始部署

  1. # ./kk create cluster --with-kubernetes v1.20.4 --with-kubesphere v3.1.0 -f config-sample.yaml -y
name sudo curl openssl ebtables socat ipset conntrack docker nfs client ceph client glusterfs client time
localhost.localdomain.cluster.local y y y y y y y         CST 23:44:43

以上是KubeSphere依赖的服务,如果在现有的Kubernetes集群上部署KubeSphere,需要有一个持久化(nfs、ceph、glusterfs三个选一个)

kk命令是以Kubeadm的形式安装的Kubernetes集群

如果是内网服务器,要先把所需的镜像都下载好,还需要提前安装好docker,然后加上--skip-pull-images参数,就不会去网络上拉取镜像了

使用KubeKey部署Kubernetes集群,需要用到如下镜像,版本自己根据实际所需去修改:

registry.cn-beijing.aliyuncs.com/kubesphereio/kube-proxy:v1.20.4
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-apiserver:v1.20.4
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controller-manager:v1.20.4
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-scheduler:v1.20.4
registry.cn-beijing.aliyuncs.com/kubesphereio/node:v3.16.3
registry.cn-beijing.aliyuncs.com/kubesphereio/pod2daemon-flexvol:v3.16.3
registry.cn-beijing.aliyuncs.com/kubesphereio/cni:v3.16.3
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controllers:v3.16.3
registry.cn-beijing.aliyuncs.com/kubesphereio/etcd:v3.4.13
registry.cn-beijing.aliyuncs.com/kubesphereio/k8s-dns-node-cache:1.15.12
registry.cn-beijing.aliyuncs.com/kubesphereio/coredns:1.6.9
registry.cn-beijing.aliyuncs.com/kubesphereio/pause:3.2

关于一些会出现的报错,以及解决方法

如果一直有报错:The connection to the server localhost:8080 was refused - did you specify the right host or port?: Process exited with status 1

可以尝试下面的命令,清除集群,重新创建集群

  1. # ./kk delete cluster -f config-sample.yaml

如果镜像已经下载好了才报错的,清除集群后,再次创建集群即可

  1. # ./kk create cluster --with-kubernetes v1.20.4 --with-kubesphere v3.1.0 -f config-sample.yaml -y

如果看到这个报错,就看一下,是不是报错的节点,缺少依赖

  1. Failed to join node: interrupted by error

到所有节点,再次执行下面的这个命令,确保返回Nothing to do

  1. # yum install -y socat conntrack ebtables ipset

集群验证

看到这个,表示Kubernetes集群已经部署完成了,这里在部署KubeSphere,需要等待一会,时间会稍微有点久

  1. Please wait for the installation to complete: >>--->

看到这个,表示KubeSphere以及部署完成了

访问:http://192.168.72.77:30880

用户名:admin

密码:P@88w0rd

第一次登录,会提示修改密码

  1. #####################################################
  2. ### Welcome to KubeSphere! ###
  3. #####################################################
  4. Console: http://192.168.72.77:30880
  5. Account: admin
  6. Password: P@88w0rd
  7. NOTES
  8. 1. After you log into the console, please check the
  9. monitoring status of service components in
  10. "Cluster Management". If any service is not
  11. ready, please wait patiently until all components
  12. are up and running.
  13. 2. Please change the default password after login.
  14. #####################################################
  15. https://kubesphere.io 2021-05-09 22:23:47
  16. #####################################################




KubeSphere还支持各种告警

到这里,完成了一个最小化的KubeSphere的部署

Centos 7.6 使用 kubekey 部署 kubesphere v3.1.0的更多相关文章

  1. Centos 6.8 安装 Protocol Buffers , v3.2.0有 BUG ,安装 3.1.0

    Centos 6.8 安装 Protocol Buffers   , v3.2.0有 BUG ,安装 3.1.0 切换到用户目录 cd ~ 安装 python2.7,须加入zlib wget http ...

  2. SpringBoot入门教程(二)CentOS部署SpringBoot项目从0到1

    在之前的博文<详解intellij idea搭建SpringBoot>介绍了idea搭建SpringBoot的详细过程, 并在<CentOS安装Tomcat>中介绍了Tomca ...

  3. 在CentOS 上搭建nginx来部署静态页面网站

    在centOs 上搭建nginx来部署静态页面网站 一.部署服务器环境 nginx:轻量级.高性能的HTTP及反向代理服务器,占用内存少,并发能力强,相比老牌的apache作为web服务器,性能更加卓 ...

  4. 【转载】在Centos系统上采用二进制文件部署Node.js环境

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又 ...

  5. Redis学习(一):CentOS下redis安装和部署

    1.基础知识  redis是用C语言开发的一个开源的高性能键值对(key-value)数据库.它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止redis支持的键值数据类型如下字符串.列表 ...

  6. Redis在CentOS 7上的安装部署

    简介: Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集 合和有序集合.支持在服务器端计算集合的并,交和补集( ...

  7. 在 Kubernetes 集群快速部署 KubeSphere 容器平台

    KubeSphere 不仅支持部署在 Linux 之上,还支持在已有 Kubernetes 集群之上部署 KubeSphere,自动纳管 Kubernetes 集群的已有资源与容器. 前提条件 Kub ...

  8. [转帖]在 Kubernetes 离线部署 KubeSphere

    在 Kubernetes 离线部署 KubeSphere https://kubesphere.io/docs/v2.0/zh-CN/installation/install-ks-offline/ ...

  9. CentOS下nagios报警飞信部署四步走

    CentOS下nagios报警飞信部署四步走   今天 帮群里一兄弟配了下nagios上的飞信,这个东西 我个人感觉还是很实用的,不过好久没配了,今天配置了一遍,顺便 就把过程记录下来了,供大家学习! ...

随机推荐

  1. vue js 格式化时间

    常用于iview日期组件时间处理 /** * @param {Number} num 数值 * @returns {String} 处理后的字符串 * @description 如果传入的数值小于10 ...

  2. 基于Typescript和Jest刷题环境搭建与使用

    写在前面 前几个月在公司用vue3和ts写项目,想巩固一下基础,于是我想起了去年基于JavaScript和Jest搭建的刷题环境,不如,给它搞个加强版,结合Typescript和Jest 搞一个刷题环 ...

  3. POJ 3617 Best Cow Line (字典序最小问题 & 贪心)

    原题链接:http://poj.org/problem?id=3617 问题梗概:给定长度为 的字符串 , 要构造一个长度为 的字符串 .起初, 是一个空串,随后反复进行下列任意操作. 从 的头部删除 ...

  4. Vulnhub系列:Tomato(文件包含getshell)

    这个靶机挺有意思,它是通过文件包含漏洞进行的getshell,主要姿势是将含有一句话木马的内容记录到ssh的登录日志中,然后利用文件包含漏洞进行包含,从而拿到shell 0x01 靶机信息 靶机:To ...

  5. 《剑指offer》面试题50. 第一个只出现一次的字符

    问题描述 在字符串 s 中找出第一个只出现一次的字符.如果没有,返回一个单空格. 示例: s = "abaccdeff" 返回 "b" s = "&q ...

  6. RichTextBox单独设置文字颜色

    richTextBox1.Select(index, "str1".Length); richTextBox1.SelectionColor = Color.Red;

  7. Android系统编程入门系列之硬件交互——通信硬件NFC

    在上篇文章介绍了接入式USB硬件的简单使用,接下来将介绍不依赖物理连接的硬件通信了.本文的重点是近距离通信的硬件NFC. NFC硬件 应用程序中可以通过NFC硬件读取或发送指定协议的技术实现,在And ...

  8. 洛谷P4859 已经没有什么好害怕的了

    因为不存在任意两个数相同,那么设糖果比药片大的组有 \(x\) 个,药片比糖果大的组有 \(y\) 个,那么我们有: \[x + y = n, x - y = k \] 即: \[x = \frac{ ...

  9. 解决 413 Request Entity Too Large

    修改配置文件  vim /etc/nginx/sites-available/default,增加 client_max_body_size 1000m;//最大上传大小 proxy_connect_ ...

  10. 使用@WebServlet等注解需要i注意的

    Servlet 3.0 的部署描述文件 web.xml 的顶层标签 <web-app> 有一个 metadata-complete 属性,该属性指定当前的部署描述文件是否是完全的.如果设置 ...