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,通过上传制品的方式,自动构建镜像和完成部署,并将镜像推送至目标仓库,仅需要通过简单的设置即可将制品快速构建成服务。 |
蓝绿部署 |
提供了一种零宕机的部署方式,在保留旧版本的同时部署新版本,将两个版本同时在线,如果有问题可以快速处理 |
金丝雀发布 |
将一部分真实流量引入一个新版本进行测试,测试新版本的性能和表现,在保证系统整体稳定运行的前提下,尽早发现新版本在实际环境上的问题。 |
流量镜像 |
流量镜像功能通常用于在生产环境进行测试,是将生产流量镜像拷贝到测试集群或者新的版本中,在引导用户的真实流量之前对新版本进行测试,旨在有效地降低新版本上线的风险。 |