CentOS安装Kubesphere

Monday, January 18, 2021

1. 说明

  • 核心: 在腾讯云上默认有一个坑,就是 hostname 是大写,会造成安装失败,所以请按照我的来
  • 当前(202010)KubeSphere 最新版本号:3.0.0
  • 官网说明:https://kubesphere.io/zh/docs/quick-start/all-in-one-on-linux/
  • 需要安全组开放所有端口

2. 安装前准备

# 系统:CentOS 7.8

# 关闭 SELinux
setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

# 禁用防火墙
systemctl stop firewalld && systemctl disable firewalld && echo "vm.swappiness = 0" >> /etc/sysctl.conf && swapoff -a && sysctl -w vm.swappiness=0

# 安装一些简单工具:
yum install -y zip unzip lrzsz git epel-release wget htop deltarpm

# 服务器更换 CentOS YUM 源为阿里云
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all && yum makecache
yum update -y

# 时间同步
timedatectl && timedatectl set-ntp true

# 设置 hostname,这个最好设置一下,并且设置全部小写字母和数字,一定要小写字母
hostnamectl set-hostname master

# 开始在所选安装机器上设置免密登录,我这里选择了 master1
ssh-keygen -t rsa -b 2048 -N '' -f ~/.ssh/id_rsa

# 这里都是内网地址
ssh-copy-id -i /root/.ssh/id_rsa.pub -p 22 [email protected]

# 测试下是否可以免登陆:
ssh -p 22 [email protected]

3. 安装 Docker

# 安装依赖工具
yum install -y yum-utils
# 安装yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装最新版docker
yum install docker-ce docker-ce-cli containerd.io
# 修改docker路径
vim /usr/lib/systemd/system/docker.service
# ExecStart=/usr/bin/dockerd 后加参数 --graph /data/docker
> 旧:ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
> 新:ExecStart=/usr/bin/dockerd --graph /data/docker -H fd:// --containerd=/run/containerd/containerd.sock
# reload 配置文件
systemctl daemon-reload
# 启动docker
systemctl start docker

# centos docker 使用腾讯云镜像
# 如果没有目录手动创建
mkdir /etc/docker
# 编辑配置文件
vim /etc/docker/daemon.json

写入如下内容:

{
 "registry-mirrors": [
   "https://mirror.ccs.tencentyun.com"
 ]
}

# 启动或重启 docker
systemctl start|restart docker

# 测试是否安装成功
docker run hello-world

# 检测使用的是否是腾讯源,如果显示的源是 https://mirror.ccs.tencentyun.com/ 就OK
docker info | grep mirror

4. 安装 Kubernetes + KubeSphere

# 下载 kubekey
wget -c https://kubesphere.io/download/kubekey-v1.0.0-linux-amd64.tar.gz -O - | tar -xz
chmod +x kk

# 开始安装,终端会出现一个当前环境已有环境检查,比如 docker 已安装等
./kk create cluster --with-kubernetes v1.17.9 --with-kubesphere v3.0.0

# 当控制台出现这一行字,表示 kubesphere 开始进入守护进程方式安装后续部分了
# INFO[12:51:25 CST] Installation is complete.
# Please check the result using the command:
# kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o # # jsonpath='{.items[0].metadata.name}') -f

# 这时候你可以看到你服务器已经下载了这些镜像:
  [root@master1 ~]# docker images
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
kubesphere/ks-installer              v3.0.0              893b46ffa208        6 weeks ago         692MB
kubesphere/kube-proxy                v1.17.9             ddc09a4c2193        3 months ago        117MB
kubesphere/kube-controller-manager   v1.17.9             c7f1dde319ee        3 months ago        161MB
kubesphere/kube-apiserver            v1.17.9             7417868987f3        3 months ago        171MB
kubesphere/kube-scheduler            v1.17.9             f7b1228fa995        3 months ago        94.4MB
calico/node                          v3.15.1             1470783b1474        3 months ago        262MB
calico/pod2daemon-flexvol            v3.15.1             a696ebcb2ac7        3 months ago        112MB
calico/cni                           v3.15.1             2858353c1d25        3 months ago        217MB
calico/kube-controllers              v3.15.1             8ed9dbffe350        3 months ago        53.1MB
kubesphere/provisioner-localpv       1.10.0              6b5529f464f7        5 months ago        68.4MB
kubesphere/node-disk-operator        0.5.0               8741fafb7b21        5 months ago        167MB
kubesphere/node-disk-manager         0.5.0               dbbed43bcbdb        5 months ago        168MB
kubesphere/k8s-dns-node-cache        1.15.12             5340ba194ec9        6 months ago        107MB
coredns/coredns                      1.6.9               faac9e62c0d6        7 months ago        43.2MB
kubesphere/etcd                      v3.3.12             28c771d7cfbf        21 months ago       40.6MB
kubesphere/pause                     3.1                 da86e6ba6ca1        2 years ago         742kB

# 我们可以根据命令来查看守护进程安装进度:
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://172.16.0.5:30880
Account: admin
Password: P@88w0rd

NOTES:
  1. After logging into the console, please check the
     monitoring status of service components in
     the "Cluster Management". If any service is not
     ready, please wait patiently until all components
     are ready.
  2. Please modify the default password after login.

#####################################################
https://kubesphere.io             2020-10-30 17:18:00
#####################################################


# 这时候我们再来看看下载了哪些镜像:
[root@master1 ~]# docker images
REPOSITORY                                    TAG                 IMAGE ID            CREATED             SIZE
kubesphere/ks-installer                       v3.0.0              893b46ffa208        6 weeks ago         692MB
kubesphere/ks-controller-manager              v3.0.0              85bd13080839        2 months ago        82MB
kubesphere/ks-apiserver                       v3.0.0              d9fac59cfb8c        2 months ago        120MB
kubesphere/ks-console                         v3.0.0              d5987e1f99ac        2 months ago        95.5MB
prom/prometheus                               v2.20.1             b205ccdd28d3        2 months ago        145MB
kubesphere/notification-manager               v0.1.0              331a0e6ece23        3 months ago        47.5MB
kubesphere/notification-manager-operator      v0.1.0              c441b79e9606        3 months ago        44.4MB
kubesphere/kube-proxy                         v1.17.9             ddc09a4c2193        3 months ago        117MB
kubesphere/kube-apiserver                     v1.17.9             7417868987f3        3 months ago        171MB
kubesphere/kube-controller-manager            v1.17.9             c7f1dde319ee        3 months ago        161MB
kubesphere/kube-scheduler                     v1.17.9             f7b1228fa995        3 months ago        94.4MB
calico/node                                   v3.15.1             1470783b1474        3 months ago        262MB
calico/pod2daemon-flexvol                     v3.15.1             a696ebcb2ac7        3 months ago        112MB
calico/cni                                    v3.15.1             2858353c1d25        3 months ago        217MB
calico/kube-controllers                       v3.15.1             8ed9dbffe350        3 months ago        53.1MB
kubesphere/prometheus-config-reloader         v0.38.3             8011d6eb5bac        4 months ago        10.1MB
kubesphere/prometheus-operator                v0.38.3             a703e647b26f        4 months ago        38.6MB
prom/alertmanager                             v0.21.0             c876f5897d7b        4 months ago        55.5MB
kubesphere/kube-state-metrics                 v1.9.6              092e8ed1e0b3        5 months ago        32.8MB
kubesphere/provisioner-localpv                1.10.0              6b5529f464f7        5 months ago        68.4MB
kubesphere/node-disk-operator                 0.5.0               8741fafb7b21        5 months ago        167MB
kubesphere/node-disk-manager                  0.5.0               dbbed43bcbdb        5 months ago        168MB
kubesphere/linux-utils                        1.10.0              28c1cd0be1ea        5 months ago        11MB
osixia/openldap                               1.3.0               faac9bb59f83        5 months ago        260MB
kubesphere/metrics-server                     v0.3.7              07c9e703ca2c        6 months ago        55.4MB
kubesphere/k8s-dns-node-cache                 1.15.12             5340ba194ec9        6 months ago        107MB
coredns/coredns                               1.6.9               faac9e62c0d6        7 months ago        43.2MB
csiplugin/snapshot-controller                 v2.0.1              525889021849        9 months ago        41.4MB
kubesphere/node-exporter                      ks-v0.18.1          cfb0175954de        11 months ago       23.7MB
kubesphere/kubectl                            v1.0.0              7f81664a09d0        12 months ago       82.1MB
redis                                         5.0.5-alpine        ed7d2ff5a623        14 months ago       29.3MB
jimmidyson/configmap-reload                   v0.3.0              7ec24a279487        14 months ago       9.7MB
kubesphere/etcd                               v3.3.12             28c771d7cfbf        21 months ago       40.6MB
kubesphere/kube-rbac-proxy                    v0.4.1              70eeaa7791f2        21 months ago       41.3MB
kubesphere/pause                              3.1                 da86e6ba6ca1        2 years ago         742kB
mirrorgooglecontainers/defaultbackend-amd64   1.4                 846921f0fe0e        3 years ago         4.84MB


# 等个 5 分钟再来看看有哪些 pod:
[root@master ~]# kubectl get pods -A
NAMESPACE                      NAME                                               READY   STATUS    RESTARTS   AGE
kube-system                    calico-kube-controllers-59d85c5c84-qbwqb           1/1     Running   0          12m
kube-system                    calico-node-zn84s                                  1/1     Running   0          12m
kube-system                    coredns-74d59cc5c6-plx4c                           1/1     Running   0          12m
kube-system                    coredns-74d59cc5c6-zct54                           1/1     Running   0          12m
kube-system                    kube-apiserver-master                              1/1     Running   0          12m
kube-system                    kube-controller-manager-master                     1/1     Running   0          12m
kube-system                    kube-proxy-9672d                                   1/1     Running   0          12m
kube-system                    kube-scheduler-master                              1/1     Running   0          12m
kube-system                    metrics-server-5ddd98b7f9-dbc2n                    1/1     Running   0          11m
kube-system                    nodelocaldns-6w4rr                                 1/1     Running   0          12m
kube-system                    openebs-localpv-provisioner-84956ddb89-jkdns       1/1     Running   0          12m
kube-system                    openebs-ndm-fcrlq                                  1/1     Running   0          12m
kube-system                    openebs-ndm-operator-6896cbf7b8-sz2pv              1/1     Running   1          12m
kube-system                    snapshot-controller-0                              1/1     Running   0          9m46s
kubesphere-controls-system     default-http-backend-5d464dd566-cns9c              1/1     Running   0          9m24s
kubesphere-controls-system     kubectl-admin-6c9bd5b454-54xhj                     1/1     Running   0          6m22s
kubesphere-monitoring-system   alertmanager-main-0                                2/2     Running   0          7m35s
kubesphere-monitoring-system   kube-state-metrics-5c466fc7b6-z8w2c                3/3     Running   0          8m30s
kubesphere-monitoring-system   node-exporter-jvgws                                2/2     Running   0          8m31s
kubesphere-monitoring-system   notification-manager-deployment-7ff95b7544-zzk6p   1/1     Running   0          4m12s
kubesphere-monitoring-system   notification-manager-operator-5cbb58b756-pnpwr     2/2     Running   0          8m17s
kubesphere-monitoring-system   prometheus-k8s-0                                   3/3     Running   1          7m25s
kubesphere-monitoring-system   prometheus-operator-78c5cdbc8f-hjg7p               2/2     Running   0          8m31s
kubesphere-system              ks-apiserver-566f7d5c96-rnk96                      1/1     Running   0          7m57s
kubesphere-system              ks-console-fb4c655cf-nkq5q                         1/1     Running   0          9m12s
kubesphere-system              ks-controller-manager-64459d95bb-p9jz7             1/1     Running   0          7m57s
kubesphere-system              ks-installer-85854b8c8-cmppw                       1/1     Running   0          12m
kubesphere-system              openldap-0                                         1/1     Running   0          9m35s
kubesphere-system              redis-6fd6c6d6f9-96rs2                             1/1     Running   0          9m40s

5. KubeSphere 名词解释

KubeSphere Kubernetes 对照释义
项目 Namespace, 为 Kubernetes 集群提供虚拟的隔离作用,详见 Namespace
容器组 Pod,是 Kubernetes 进行资源调度的最小单位,每个 Pod 中运行着一个或多个密切相关的业务容器
部署 Deployments,表示用户对 Kubernetes 集群的一次更新操作,详见 Deployment
有状态副本集 StatefulSets,用来管理有状态应用,可以保证部署和 scale 的顺序,详见 StatefulSet
守护进程集 DaemonSet,保证在每个 Node 上都运行一个容器副本,常用来部署一些集群的日志、监控或者其他系统管理应用,详见 Daemonset
任务 Jobs,在 Kubernetes 中用来控制批处理型任务的资源对象,即仅执行一次的任务,它保证批处理任务的一个或多个 Pod 成功结束。任务管理的 Pod 根据用户的设置将任务成功完成就自动退出了。比如在创建工作负载前,执行任务,将镜像上传至镜像仓库。详见 Job
定时任务 CronJob,是基于时间的 Job,就类似于 Linux 系统的 crontab,在指定的时间周期运行指定的 Job,在给定时间点只运行一次或周期性地运行。详见 CronJob
服务 Service, 一个 Kubernete 服务是一个最小的对象,类似 Pod,和其它的终端对象一样,详见 Service
应用路由 Ingress,是授权入站连接到达集群服务的规则集合。可通过 Ingress 配置提供外部可访问的 URL、负载均衡、SSL、基于名称的虚拟主机等,详见 Ingress
镜像仓库 Image Registries,镜像仓库用于存放 Docker 镜像,包括公共镜像仓库(如 DockerHub)和私有镜像仓库(如 Harbor)
存储卷 PersistentVolumeClaim(PVC),满足用户对于持久化存储的需求,用户将 Pod 内需要持久化的数据挂载至存储卷,删除 Pod 后,数据仍保留在存储卷内。Kubesphere 推荐使用动态分配存储,当集群管理员配置存储类型后,集群用户可一键式分配和回收存储卷,无需关心存储底层细节。详见 Volume
存储类型 StorageClass,为管理员提供了描述存储 “Class(类)” 的方法,包含 Provisioner、 ReclaimPolicy 和 Parameters 。详见 StorageClass
流水线 Pipeline,简单来说就是一套运行在 Jenkins 上的 CI/CD 工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。
企业空间 Workspace,是 KubeSphere 实现多租户模式的基础,是您管理项目、 DevOps 工程和企业成员的基本单位。
主机 Node,Kubernetes 集群中的计算能力由 Node 提供,Kubernetes 集群中的 Node 是所有 Pod 运行所在的工作主机,可以是物理机也可以是虚拟机。详见 Nodes
S2i Source to Image,通过代码构建新的容器镜像,表示从已有的代码仓库中获取代码,并通过 Source to Image 的方式构建镜像的方式来完成部署,每次构建镜像的过程将以任务 (Job) 的方式去完成。
B2i Binary to Image,通过上传制品的方式,自动构建镜像和完成部署,并将镜像推送至目标仓库,仅需要通过简单的设置即可将制品快速构建成服务。
蓝绿部署 提供了一种零宕机的部署方式,在保留旧版本的同时部署新版本,将两个版本同时在线,如果有问题可以快速处理
金丝雀发布 将一部分真实流量引入一个新版本进行测试,测试新版本的性能和表现,在保证系统整体稳定运行的前提下,尽早发现新版本在实际环境上的问题。
流量镜像 流量镜像功能通常用于在生产环境进行测试,是将生产流量镜像拷贝到测试集群或者新的版本中,在引导用户的真实流量之前对新版本进行测试,旨在有效地降低新版本上线的风险。
Linux CentOS Kubernetes Kubesphere

CentOS7.6初始化Git 导出提交记录