从零搭建云原生技术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)

大家都在看

  • Stripe支付介绍在asp.net mvc中开发对接,图文加代码说明

    最近一个国外的电商项目,需要对接支付功能,国内的支付一般使用微信支付、支付宝、银联等等,但国际上一般使用Paypal、Skrill、BrainTree、Stripe等,经过内部综合…

    数据库 2023年6月14日
    0114
  • 对于Java循环中的For和For-each,哪个更快

    Which is Faster For Loop or For-each in Java 对于Java循环中的For和For-each,哪个更快 通过本文,您可以了解一些集合遍历技…

    数据库 2023年6月11日
    095
  • MySQL实战45讲 4,5

    04 | 深入浅出索引(上) 索引的出现实际上是为了提高数据查询的效率,就像一本书的目录一样。 [En] The emergence of the index is actuall…

    数据库 2023年5月24日
    0104
  • SpringMVC完整版详解

    1.回顾MVC 1.1什么是MVC MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。 是将业务逻辑、数据、显示分离的方法来组…

    数据库 2023年6月16日
    082
  • requests模块的使用

    安装:pip install requests get请求 1、发送 get 请求 import requests header = { ‘referer’: ‘https://w…

    数据库 2023年6月9日
    0107
  • JVM-虚拟机栈

    运行时数据区-虚拟机栈 JAVA技术交流群:737698533 java虚拟机在执行java程序过程中会把它所管理的内存划分为若干个不同的区域,这些区域各有各的作用,根据java虚…

    数据库 2023年6月16日
    0118
  • Java正则表达式Pattern和Matcher类详解

    概述 Pattern类的作用在于编译正则表达式后创建一个匹配模式. Matcher类使用Pattern实例提供的模式信息对正则表达式进行匹配 Pattern类 常用方法及介绍 Pa…

    数据库 2023年6月11日
    0109
  • HackerRank第一趴–Basic Select

    ID number NAME VARCHAR2(17) COUNTRYCODE VARCHAR2(3) DISTRICT VARCHAR2(20) POPULATION numbe…

    数据库 2023年6月16日
    0101
  • Python–生成器

    学习生成器之前,首先需要认识列表生成式,直奔主题。 1、简单列表生成式示例: 看样子好像很NB的样子,其实它等价于: 其实还是有点NB的,毕竟代码少了,手动嘻嘻嘻! 2、削微高级点…

    数据库 2023年6月9日
    0136
  • 【Java框架】– SpringBoot大文件RestTemplate下载解决方案

    近期基于项目上使用到的RestTemplate下载文件流,遇到1G以上的大文件,下载需要3-4分钟,因为调用API接口没有做分片与多线程, 文件流全部采用同步方式加载,性能很慢。最…

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

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

    数据库 2023年5月24日
    092
  • 字节一面:事务还没提交的时候,redolog 能不能被持久化到磁盘呢?

    又是被自己菜醒的一天,总结面经看到这题目听都没听过,打开百度就像吃饭一样自然 老规矩,背诵版在文末。点击阅读原文可以直达我收录整理的各大厂面试真题 首先,咱需要明白的是,啥是持久化…

    数据库 2023年6月6日
    0138
  • 关于.netcore即时生成缩略图踩的坑

    最近在开发一套系统,很多地方用到了缩略图,然而不同的地方用到的尺寸又不一样,上传的时候生成缩略图就没有意义了,因为你不知道会使用到哪些尺寸,于是想到即时生成的办法,前端判断图片是否…

    数据库 2023年6月9日
    0106
  • 第十七章 AOP编程

    1.AOP概念 AOP(Aspect Oriented Programing) 面向切面编程 = Spring动态代理开发 以切面为基本单位的程序开发,通过切面间的相互协同,相互调…

    数据库 2023年6月14日
    0104
  • ORA-12012: error on auto execute of job “SYS”.”ORA$AT_OS_OPT_SY_128403″

    刚接手的一个Oracle 12C数据库,配置监控告警日志的作业时,发现告警日志中有大量下面错误,而且这些错误一般是晚上22点出现 数据库版本信息如下所示: 查了一下官方文档,结合当…

    数据库 2023年6月11日
    062
  • 常用MySQL语句(持续更新)

    1. 客户端登录 在终端输入 mysql -u[&#x7528;&#x6237;&#x540D;] -p[&#x5BC6;&#x7801;]…

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