乐趣区

关于云原生:从零搭建云原生技术kubernetesK8S环境通过kubesPhere的AllInOne方式

前言

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

服务器

服务器 账号 明码
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
{"insecure-registries":["10.8.104.247:5000","git.xcc.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
systemctl restart docker
systemctl status docker
docker info | grep "Registry Mirrors" -A 1

## 查看 DNS 设置
cat /etc/resolv.conf  

​```shell script
#须要时可改为上面 dns 配置
nameserver 114.114.114.114
nameserver 8.8.8.8

设置 kubernetes 仓库

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

装置命令

#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

输入信息会显示 Web 控制台的 IP 地址和端口号,默认的 NodePort 是 30880。当初,您能够应用默认的帐户和明码 (admin/P@88w0rd) 通过 <NodeIP>:30880 拜访控制台。

#####################################################
###              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
#####################################################

删除 kubesphere

* 如果您以疾速入门(all-in-one)开始:​```shell script
./kk delete cluster
​```

* 如果从高级装置开始(应用配置文件创立的集群):​```shell script
./kk delete cluster [-f config-sample.yaml]
​```

启用多集群

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

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

命令:

## 先装置 helm

## 而后执行上面命令

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: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,点击增加集群,输出集群根本信息后点击下一步。
  • 连贯形式抉择 间接连贯 KubeSphere 集群,将 Member 集群的 kubeconfig 内容粘贴到输入框中。确保 kubeconfig 中的 server 地址在 H 集群中的任一节点都能够拜访。KubeSphere API Server 地址填写 KubeSphere APIServer 的地址,也能够不填。
    [
  • 点击导入,期待集群初始化实现即可

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 的代理服务。

    1. 如果集群有能够应用的 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
    2. 如果始终没有对应的地址显示,则须要手动设置下代理地址。假如当初有能够对外的公网 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
    3. 批改配置文件,填入之前设置的地址

      $ kubectl -n kubesphere-system edit clusterconfiguration ks-installer
      
      multicluster:
          clusterRole: host
          proxyPublishAddress: http://139.198.120.120:8080 # 减少这一行,设置 tower 服务的拜访地址,填入下面设置的 IP 地址
    4. 保留设置,并且重启 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. 连贯形式抉择 集群连贯代理,点击导入

  3. 依据提醒在 M 集群中,创立一个 agent.yaml 文件,并将生成的部署粘贴到文件中,在节点上执行 kubectl create -f agent.yaml,期待 agent 运行失常。确保 M 集群上能够拜访 H 集群的代理地址。

  4. 集群代理运行失常后即可在 H 集群上看到导入的集群

kubekey 其余命令

增加新节点参考文档:增加新节点 (kubesphere.io)

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

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

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

退出移动版