从零搭建云原生技术kubernetes(K8S)环境-通过kubesPhere的AllInOne方式

前言

k8s云原生搭建,步骤有点多,但通过kubesphere,可以快速搭建k8s环境,同时有一个以 Kubernetes 为内核的云原生分布式操作系统-kubesphere,本文将从零开始进行kubePhere3.1.1的安装搭建,采用了KubeKey,KubeKeyKubeKey 可以将 Kubernetes 和 KubeSphere 一同安装,其他版本大同小异,只是改个版本号而已。

从零搭建云原生技术kubernetes(K8S)环境-通过kubesPhere的AllInOne方式

服务器

服务器 账号 密码 139.198.22.13 root ****

参考官方文档

在 Linux 上以 All-in-One 模式安装 KubeSphere

通过kubekey安装KubeSphere,具体参考 官方配置/README_zh-CN.md

安装前准备

## 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

## 查看并关闭swap分区
swapoff -a
echo "vm.swappiness=0" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
sed -i 's$/dev/mapper/centos-swap$#/dev/mapper/centos-swap$g' /etc/fstab

## 查看Selinux状态
getenforce

## 安装依赖组件
yum install -y ebtables socat ipset conntrack

## 安装docker
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum makecache fast
yum -y install docker-ce docker-ce-cli

## 启动docker
systemctl enable docker && systemctl start docker

## 设置docker镜像加速器
cat > /etc/docker/daemon.json <<eof 1 { "insecure-registries":["{自己的docker私库}:5000","www.nexus.com:5000"], "registry-mirrors": ["https: dzhtyzgo.mirror.aliyuncs.com"], "exec-opts": ["native.cgroupdriver="systemd"]," "log-driver": "json-file", "log-opts": "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check="true"" ] } eof ## 重启docker使配置生效 #重载配置 systemctl daemon-reload restart docker status info | grep "registry mirrors" -a 检查dns设置 cat etc resolv.conf ​shell script #需要时可改为下面dns配置 nameserver 114.114.114.114 8.8.8.8 < code></eof>
</code></pre>
<h2>设置kubernetes仓库</h2>
<pre><code>cat <<eof> /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name = Kubernetes
baseurl = http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled = 1
gpgcheck = 0
repo_gpgcheck = 0
gpgkey = http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
        http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum makecache fast
</eof>
</code></pre>
<p>安装命令</p>
<pre><code>#0、放在目录里
mkdir -vp /data/kubesphere
cd /data/kubesphere

#1、下载KubeKey
curl -sfL https://get-kk.kubesphere.io | VERSION=v1.1.1 sh -

#2、添加可执行权限
chmod +x kk

#3、开始安装
#安装 KubeSphere v3.1.1 的建议 Kubernetes 版本:v1.17.9,v1.18.8,v1.19.8 以及 v1.20.4。如果不指定 Kubernetes 版本,KubeKey 将默认安装 Kubernetes v1.19.8。
#案例
   ./kk create cluster [--with-kubernetes version] [--with-kubesphere version]
#若要同时安装 Kubernetes 和 KubeSphere,可参考以下示例命令:
   ./kk create cluster --with-kubernetes v1.20.4 --with-kubesphere v3.1.1

./kk create cluster --with-kubernetes v1.18.8 --with-kubesphere v3.1.1

#验证安装结果
#输出信息会显示 Web 控制台的 IP 地址和端口号,默认的 NodePort 是 30880。现在,您可以使用默认的帐户和密码 (admin/P@88w0rd) 通过 <nodeip>:30880 访问控制台。
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f

</nodeip>
</code></pre>
<p>输出信息会显示 Web 控制台的 IP 地址和端口号,默认的 NodePort 是 <code>30880</code>。现在,您可以使用默认的帐户和密码 (<code>admin/P@88w0rd</code>) 通过 <code><nodeip>:30880</nodeip></code> 访问控制台。</p>
<pre><code>#####################################################
###              Welcome to KubeSphere!           ###
#####################################################

Console: http://192.168.0.2:30880
Account: admin
Password: P@88w0rd

NOTES:
  1. After you log into the console, please check the
     monitoring status of service components in
     "Cluster Management". If any service is not
     ready, please wait patiently until all components
     are up and running.

  2. Please change the default password after login.

#####################################################
https://kubesphere.io             20xx-xx-xx xx:xx:xx
#####################################################
</code></pre>
<h2>删除kubesphere</h2>
<pre><code>* 如果您以快速入门(all-in-one)开始:

​ script
./kk delete cluster
&#x200B;

* 如果从高级安装开始(使用配置文件创建的集群):

​ script
./kk delete cluster [-f config-sample.yaml]
&#x200B;`

启用多集群

参考文档:community/README_zh.md at master · kubesphere/community · GitHub

member要最小化安装,参考文档:在 Kubernetes 上最小化安装 KubeSphere

命令:

## &#x5148;&#x5B89;&#x88C5;helm

## &#x7136;&#x540E;&#x6267;&#x884C;&#x4E0B;&#x9762;&#x547D;&#x4EE4;

kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.1/kubesphere-installer.yaml

kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.1.1/cluster-configuration.yaml

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f

1. 概述

多集群功能涉及到多个集群之间的网络连通,了解集群之前的网络拓扑有助于减少接下来的工作量。

多集群功能需要创建一个 Host Cluster,实际即是一个开启了多集群功能的 KubeSphere 集群,简称 H 集群。H 集群管理的所有集群称之为 Member Cluster,即是一个普通的未开启多集群功能的 KubeSphere 集群,简称 M 集群。H 集群只能有一个,M 集群可以有多个。在多集群架构中,要求 H 集群和 M 集群网络可以直连或者通过代理连通,M 集群之间的网络可以是处在完全隔离的环境中。

2. 直接连接

如果 M 集群 kube-apiserver 地址可以在 H 集群上的任一节点上都能访问,即可以使用直接连接的方式。直接连接方式适用于 M 集群可以暴露 kube-apiserver 地址或者 H 和 M 集群处在同一个私网环境中。

2.1. 安装 Host Cluster 集群

  • 安装 Host Cluster 与安装 KubeSphere 没有大的区别,唯一的区别在于安装时确保 installer 的配置文件 ClusterConfiguration 中 multicluster 项如下配置。
  • none改成host
multicluster:
  clusterRole: host

如果你已经有一个安装好的 KubeSphere 集群,也可以通过修改 cluster configuration 的方式改变集群的角色,然后等待配置生效。

kubectl edit cc ks-installer -n kubesphere-system

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f

直到显示出

#####################################################
###              Welcome to KubeSphere!           ###
#####################################################

Console: http://192.168.1.100:30880
Account: admin
Password: P@88w0rd

NOTES&#xFF1A;
  1. After you log into the console, please check the
     monitoring status of service components in
     "Cluster Management". If any service is not
     ready, please wait patiently until all components
     are up and running.

  2. Please change the default password after login.

#####################################################
https://kubesphere.io             2022-02-09 15:35:57
#####################################################

2.2. 安装 Member Cluster 集群

  • 为了能够使 host 集群直接管理 member 集群,需要将 member 集群的 jwtSecret 设置与 host 相同。 首先在 host 集群上执行下列命令获取到 host 集群的 jwtSecret。
$ kubectl -n kubesphere-system get cm kubesphere-config -o yaml | grep -v "apiVersion" | grep jwtSecret
  jwtSecret: "hFsuNkESfUVBiaP9VdFW1kSPTGvvDOUX"
  • 安装 Member Cluster 和安装普通的未开启多集群功能的集群没有任何区别。确保安装时 installer 的 ClusterConfiguration 中 multicluster 项设置角色,同时填入上面获取的 host 的 jwtSecret。
authentication:
  jwtSecret: hFsuNkESfUVBiaP9VdFW1kSPTGvvDOUX

multicluster:
  clusterRole: member

配置完成后,执行安装。如果你已经有一个安装好的 KubeSphere 集群,也可以通过修改 cluster configuration 的方式改变集群的角色和 jwtSecret,然后等待配置生效。

kubectl edit cc ks-installer -n kubesphere-system

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f

2.3. 导入集群

  • 打开 H 集群 dashboard,点击添加集群,输入集群基本信息后点击下一步。
  • 连接方式选择 &#x76F4;&#x63A5;&#x8FDE;&#x63A5; KubeSphere &#x96C6;&#x7FA4;, 将 Member 集群的 kubeconfig 内容粘贴到输入框中。确保 kubeconfig 中的 server 地址在 H 集群中的任一节点都可以访问。 KubeSphere API Server 地址填写 KubeSphere APIServer 的地址,也可以不填。
    从零搭建云原生技术kubernetes(K8S)环境-通过kubesPhere的AllInOne方式[
  • 点击导入,等待集群初始化完成即可

3. 代理连接

代理连接使用了 KubeSphere 的 Tower 组件,Tower 是一个可以在集群间通过代理方式创建网络连接的工具。如果 H 集群不能直接访问 M 集群,可以通过暴露 H 集群代理服务地址,M 集群通过代理来创建和 H 集群的网络连接。代理连接的方式适用于 M 集群处在非公开的 IDC 机房等私有环境,而 H 集群有能力暴露代理服务的场景。

3.1. 安装 Host Cluster

  • 安装 Host Cluster 与安装 KubeSphere 没有大的区别,唯一的区别在于安装时确保 installer 的配置文件 ClusterConfiguration 中 multicluster 项如下配置 。
multicluster:
  clusterRole: host

如果你已经有一个安装好的 KubeSphere 集群,也可以通过修改 cluster configuration 的方式改变集群的角色,然后等待配置生效。

kubectl edit cc ks-installer -n kubesphere-system
  • 设置代理服务地址 Host Cluster 安装成功后, kubesphere-system 项目下会创建一个名称为 tower,type 为 LoadBalancer 的代理服务。
  • 如果集群有可以使用的 LoadBalancer 插件,可以看到 EXTERNAL-IP 栏目有对应的地址显示,KubeSphere 会自动获取这个地址,我们可以跳过接下来的设置代理的步骤。
$ kubectl -n kubesphere-system get svc
NAME       TYPE            CLUSTER-IP      EXTERNAL-IP     PORT(S)              AGE
tower      LoadBalancer    10.233.63.191   139.198.110.23  8080:30721/TCP       16h
  1. 如果一直没有对应的地址显示,则需要手动设置下代理地址。假设现在有可以对外的公网 IP 地址 139.198.120.120,已经通过端口转发的方式将此 IP 地址的 8080 端口转发到集群节点的 30721 端口 (请根据您具体的端口号转发)。
$ kubectl -n kubesphere-system get svc
NAME       TYPE            CLUSTER-IP      EXTERNAL-IP     PORT(S)              AGE
tower      LoadBalancer    10.233.63.191   <pending>  8080:30721/TCP       16h
</pending>
  1. 修改配置文件,填入之前设置的地址
$ kubectl -n kubesphere-system edit clusterconfiguration ks-installer

multicluster:
    clusterRole: host
    proxyPublishAddress: http://139.198.120.120:8080 # &#x589E;&#x52A0;&#x8FD9;&#x4E00;&#x884C;&#xFF0C;&#x8BBE;&#x7F6E; tower &#x670D;&#x52A1;&#x7684;&#x8BBF;&#x95EE;&#x5730;&#x5740;&#xFF0C;&#x586B;&#x5165;&#x4E0A;&#x9762;&#x8BBE;&#x7F6E;&#x7684; IP &#x5730;&#x5740;
  1. 保存设置,并且重启 ks-apiserver
kubectl -n kubesphere-system rollout restart deployment ks-apiserver

3.2. 安装 Member Cluster

  • 为了能够使 host 集群直接管理 member 集群,需要将 member 集群的 jwtSecret 设置与 host 相同。 在 host 集群上执行下列命令获取到 host 集群的 jwtSecret。
$ kubectl -n kubesphere-system get cm kubesphere-config -o yaml | grep -v "apiVersion" | grep jwtSecret
  jwtSecret: "gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU"
  • 安装 Member Cluster 和安装普通的未开启多集群功能的集群没有任何区别。确保安装时 installer 的 ClusterConfiguration 中 multicluster 项如下配置,同时填入上面获取的 host 的 jwtSecret。
authentication:
  jwtSecret: gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU

multicluster:
  clusterRole: member

配置完成后,执行安装。如果你已经有一个安装好的 KubeSphere 集群,也可以通过修改 cluster configuration 的方式改变集群的角色和 jwtSecret,然后等待配置生效。

kubectl edit cc ks-installer -n kubesphere-system

3.3. 导入集群

  1. 打开 H 集群 dashboard,点击添加集群,输入集群基本信息后点击下一步。
  2. 连接方式选择 &#x96C6;&#x7FA4;&#x8FDE;&#x63A5;&#x4EE3;&#x7406;,点击导入 从零搭建云原生技术kubernetes(K8S)环境-通过kubesPhere的AllInOne方式
  3. 根据提示在 M 集群中,创建一个 agent.yaml 文件,并将生成的部署粘贴到文件中,在节点上执行 kubectl create -f agent.yaml,等待 agent 运行正常。确保 M 集群上可以访问 H 集群的代理地址。 从零搭建云原生技术kubernetes(K8S)环境-通过kubesPhere的AllInOne方式
  4. 集群代理运行正常后即可在 H 集群上看到导入的集群

kubekey其他命令

本文原创作者:奇想派、一名程序员。

文章首发平台:微信公众号【编程达人】

从零搭建云原生技术kubernetes(K8S)环境-通过kubesPhere的AllInOne方式

原创不易!各位小伙伴觉得文章不错的话,不妨关注公众号,进行 点赞(在看)、转发三连走起!谢谢大家!

Original: https://www.cnblogs.com/zhbeier/p/16596486.html
Author: 奇想派
Title: 从零搭建云原生技术kubernetes(K8S)环境-通过kubesPhere的AllInOne方式

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/621962/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • MySQL中 VARCHAR 可设置的最大长度是多少?

    在使用MySQL的过程中,在存储字符串时,大家或许都有过这样或那样的困惑,譬如: 对于固定长度的字符串,为什么推荐使用 CHAR 来存储? VARCHAR 可设置的最大长度是多少?…

    数据库 2023年6月11日
    092
  • 我应该是最后一个知道 WSL 的吧!

    前言 前段时间,我买了块固态硬盘给我的笔记本电脑装上(因为它太慢了,影响我游戏学习)。同时也重装了系统,以前一直在用 Win8.1,在上面构建了我的开发环境:在 Win8.1 上安…

    数据库 2023年6月6日
    092
  • qt项目设置程序图标

    一、下载好.ico格式的图标文件并存放到项目的根目录这里附赠一个png,jpg等格式转为ico格式的网站 二、在.pro文件里面添加ico的名字 三、发现在debug模式下运行项目…

    数据库 2023年6月6日
    086
  • 线上问题检测

    ​ jdk 自带工具 1&#x3001;&#x901A;&#x8FC7;top&#x627E;&#x5230;CPU&#x5360;…

    数据库 2023年6月6日
    088
  • 23种设计模式之状态模式(State)

    文章目录 概述 状态模式的优缺点 状态模式的使用场景 状态模式的结构和实现 * 模式结构 模式实现 总结 概述 当对象的状态改变时,同时改变其行为。 就拿QQ来说,有几种状态,在线…

    数据库 2023年6月6日
    096
  • 数据库的主从搭建

    数据库(mariadb)主从搭建 1,准备两台虚拟机(本文使用centos7演示)! 一:启动虚拟机配置环境安装数据库(俩节点都要执行操作) setenforce 0 Origin…

    数据库 2023年6月16日
    0128
  • 2022-6-2-mysql常用的命令

    mysql -uroot -proot -h192.168.56.10表示使用mysql的客户端进行连接数据库管理系统 -u后面是连接数据库的用户名,一般默认的情况下用户名都是ro…

    数据库 2023年5月24日
    081
  • Mysql 连续时间分组

    该方案不限于本例的连续时间,还可以应用于其他连续组。 [En] The scheme is not limited to the continuous time of this e…

    数据库 2023年5月24日
    071
  • 23种设计模式之责任链模式

    文章目录 概览 责任链模式的优缺点 责任链模式的结构和实现 * 模式的结构 模式的实现 总结 ; 概览 责任链模式(Chain of Responsibility Pattern)…

    数据库 2023年6月6日
    095
  • django中有关ajax的部分

    Django_ajax AJAX(Asynchronous Javascript And XML)翻译成中文就是”异步Javascript和XML”。即使用…

    数据库 2023年6月14日
    087
  • springboot~ApplicationContextAware与@Autowired注解

    ApplicationContextAware是一个接口,它提供一个方法setApplicationContext,当spring注册完成之后,会把ApplicationConte…

    数据库 2023年6月6日
    076
  • Linux的一些的常用命令

    小杰笔记: 记录一下Linux的一些常见命令: 1:Linux关机与重启的命令: 2:切换目录与查看目录的文件: 3:文件目录的创建与删除: 4:文件的复制 删除与移动: 5:如何…

    数据库 2023年6月6日
    065
  • Maven配置私有仓库

    前言 当公司或个人具有自己独有的jar时,不想公开,一般就会放在自己的私有Maven仓库中,在项目中需要引用,此时就需要将公司私有仓库配置到maven当中,一般我们的maven配置…

    数据库 2023年6月16日
    0136
  • 如何在电脑上配置Vue开发环境

    一,开发环境 : Node JS(npm) Visual Studio Code(前端IDE) 安装NodeJS 下载地址: nodejs中文网 Visual Studio Cod…

    数据库 2023年6月11日
    084
  • rm: cannot remove ‘/var/lock/subsys/mysql’: Permission denied

    Lock directory for RedHat / SuSE. lockdir=’/var/lock/subsys’ lock_file_path="$lockdir…

    数据库 2023年6月11日
    063
  • kafka详解(一)–kafka是什么及怎么用

    kafka是什么 在回答这个问题之前,我们需要先了解另一个东西–event streaming。 什么是event streaming 我觉得, event strea…

    数据库 2023年6月6日
    077
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球