kubesphere3.0的安装文档

https://www.yuque.com/leifengyang/kubesphere/hxzk3t#SAP5W

基于kubernetes环境安装kubesphere3.0的安装文档

本文档主要是在centos7系统下基于kubernetes环境安装kubesphere3.0的安装文档。

1 环境准备

1.1 系统要求

本地虚拟机三台

要求:centos7.6~7.8;以下为

https://kuboard.cn/install/install-k8s.html#%E6%A3%80%E6%9F%A5-centos-hostname 网站的检验结果。

CentOS 版本 本文档是否兼容 备注
7.8 已经验证
7.7 已经验证
7.6 已经验证
7.5 已证实会出现 kubelet 无法启动的问题
7.4 已证实会出现 kubelet 无法启动的问题
7.3 已证实会出现 kubelet 无法启动的问题
7.2 已证实会出现 kubelet 无法启动的问题

1.2 虚拟机安装步骤

安装虚拟机比较的简单,这里不做介绍。

1.2.1 创建客户机的向导

1.2.1.1 创建新的虚拟机

点击创建新的虚拟机。

1.2.1.2 新建虚拟机向导

选择典型,点击下一步。

1.2.1.3 安装客户机的操作系统

选择稍后安装操作系统,点击下一步。

1.2.1.4 选择客户机的操作系统类型

我们这里安装的Linux Centos7版本。这里我们选择的Linux系统。版本选择Redhat Enterpise Linux7 64位。

1.2.1.5 命名客户机和存储位置

这里根据自己的情况设置客户机的名称以及客户存储的本地的位置。

1.2.1.6 配置客户机的磁盘的大小

默认给出的20G,这里我设置的大一写。设置成100G。点击下一步。

1.2.1.7 已经准备创建好的客户机

点击完成。基本的客户机的创建向导完成。

1.2.1.8 配置客户机的属性

1.2.1.8.1 内存配置大小

这里我们一般设置成企业:8G、个人使用2G做演示。

1.2.1.8.2 处理器配置

处理器配置,我们一般配置成2个处理器。

1.2.1.8.3 硬盘配置

这里默认选择。不需要操作。

1.2.1.8.4 CD/DVD配置

设备状态设置成启动时连接,选择ISO镜像文件连接并配置好连接。

1.2.1.8.5 网络适配器配置

在本地配置下我们使用的NAT模式。如果在企业搭建上,建议使用桥接模式。

1.2.1.8.6 USB控制器配置

对服务器来说,不需要该设备。移除即可。

1.2.1.8.7 声卡配置

对服务器来说,不需要该设备。移除即可。

1.2.1.8.8 打印机配置

对服务器来说,不需要该设备。移除即可。

1.2.1.8.9 显示器配置

不需要操作,使用默认即可。

这里客户机的基本的配置基本完成。

1.2.1.9 安装客户机的步骤

1.2.1.9.1 开始安装客户机系统

1.2.1.9.2 按下回车开始安装配置虚拟机安装属性

等待加载系统镜像完毕。

1.2.1.9.3 选择客户机的系统语言

这里我们选择中文简体。点击继续。

1.2.1.9.4 设置安装客户机的基本配置
1.2.1.9.4.1 安装选择类型

点击完成。

1.2.1.9.5 开始安装客户机系统

点击开始安装。

1.2.1.9.6 用户设置

创建密码。自己记住即可。这里是管理员登录密码。

1.2.1.9.7 安装系统进行中

此处需要等待一段时间,不同的机器配置等待的时间不一致。

1.2.1.9.8 初始化客户机的步骤

安装成功之后,我们看到以下的图。

点击重启即可。

1.2.1.9.9 接受许可证

勾选我同意许可协议。重启系统。输入用户名密码登录到系统。至此我们的系统客户机安装成功。

1.2.1.9.10 系统欢迎页面

选择汉语,点击前进。

1.2.1.9.11 自定义键盘输入法

选择汉语,点击前进。

1.2.1.9.12 隐私设置

点击前进。

1.2.1.9.13 在线登录账号

这里我们跳过即可。

1.2.1.9.14 开始使用系统

1.2.1.9.15 打开终端输入命令行查询IP地址

我们连接的ens33的网卡,因此我们得到的本地的IP地址为:192.168.196.128,这里每个人的IP地址不一样。根据自己的实际情况获取IP地址。

1.2.1.9.15.1 注意,如果没有ip显示:

你可以在/etc/sysconfig/network-scripts 这个目录下面的ifcfg-ens33这个文件里面的O****NBOOT=no,修改成ONBOOT=yes,然后通过命于重新启动网络服务。

重新启动网络服务:

/etc/init.d/network restart 或 service network restart

然后可设置静态网络ip:

设置静态ip的话,一定要记住,设置GATEWAY网关的时候要跟虚拟网络编辑器的网关要一致,否则无法上网!!!

设置完静态IP以后重新启动网络服务:

/etc/init.d/network restart 或 service network restart

然后测试能不能上网:

ping www.baidu.com

1.2.1.9.16 使用外部客户端工具连接

这里虚拟机安装centos7系统完成。

安装安装上述的安装方式,需要安装三台虚拟机。

1.3 虚拟机环境如下

IP地址 说明 说明
192.168.142.144 master节点 8G内存 4核CPU
192.168.142.145 node1节点 8G内存 4核CPU
192.168.142.146 node2节点 8G内存 4核CPU

1.4 前置步骤说明

  1. centos 版本为 7.6 或 7.7、CPU 内核数量大于等于 2,且内存大于等于 4G。

  2. hostname 不是 localhost,且不包含下划线、小数点、大写字母。

  3. 任意节点都有固定的内网 IP 地址(集群机器统一内网)。

  4. 任意节点上 IP 地址 可互通(无需 NAT 映射即可相互访问),且没有防火墙、安全组隔离。

  5. 任意节点不会直接使用 docker run 或 docker-compose 运行容器,Pod。

1.4.1 安装基础工具

yum install -y wget && yum install -y vim && yum install -y lsof && yum install -y net-tools

1.4.2 配置hosts的地址名称

vim /etc/hosts 192.168.142.147 k8s-node1192.168.142.148 k8s-node2192.168.142.149 k8s-node3hostnamectl set-hostname :指定新的hostname su 切换过来

1.4.3 关闭防火墙或者阿里云开通安全组端口访问

systemctl stop firewalldsystemctl disable firewalld 执行关闭命令: systemctl stop firewalld.service再次执行查看防火墙命令:systemctl status firewalld.service执行开机禁用防火墙自启命令 : systemctl disable firewalld.service

1.4.4 关闭 selinux

sed -i ‘s/enforcing/disabled/’ /etc/selinux/configsetenforce 0cat /etc/selinux/config

1.4.5 关闭 swap

swapoff -a #临时sed -ri ‘s/.swap./#&/’ /etc/fstab #永久free -l -h

1.4.6 将桥接的 IPv4 流量传递到 iptables 的链

1.4.6.1 如果没有/etc/sysctl.conf文件的话直接执行

echo “net.ipv4.ip_forward = 1” >> /etc/sysctl.confecho “net.bridge.bridge-nf-call-ip6tables = 1” >> /etc/sysctl.confecho “net.bridge.bridge-nf-call-iptables = 1” >> /etc/sysctl.confecho “net.ipv6.conf.all.disable_ipv6 = 1” >> /etc/sysctl.confecho “net.ipv6.conf.default.disable_ipv6 = 1” >> /etc/sysctl.confecho “net.ipv6.conf.lo.disable_ipv6 = 1” >> /etc/sysctl.confecho “net.ipv6.conf.all.forwarding = 1” >> /etc/sysctl.conf

1.4.6.2 如果有该文件可以执行以下命令

sed -i “s#^net.ipv4.ip_forward.#net.ipv4.ip_forward=1#g" /etc/sysctl.confsed -i "s#^net.bridge.bridge-nf-call-ip6tables.#net.bridge.bridge-nf-call-ip6tables=1#g” /etc/sysctl.confsed -i “s#^net.bridge.bridge-nf-call-iptables.#net.bridge.bridge-nf-call-iptables=1#g" /etc/sysctl.confsed -i "s#^net.ipv6.conf.all.disable_ipv6.#net.ipv6.conf.all.disable_ipv6=1#g” /etc/sysctl.confsed -i “s#^net.ipv6.conf.default.disable_ipv6.#net.ipv6.conf.default.disable_ipv6=1#g" /etc/sysctl.confsed -i "s#^net.ipv6.conf.lo.disable_ipv6.#net.ipv6.conf.lo.disable_ipv6=1#g” /etc/sysctl.confsed -i “s#^net.ipv6.conf.all.forwarding.*#net.ipv6.conf.all.forwarding=1#g” /etc/sysctl.conf

1.4.6.3 执行命令以应用

sysctl -p

1.4.7 安装Docker环境(所有节点)

1.4.7.1 卸载旧版本的docker

sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine

1.4.7.2 安装基础依赖

yum install -y yum-utils \device-mapper-persistent-data \lvm2

1.4.7.3 配置docker yum源

sudo yum-config-manager --add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.4.7.4 安装并启动 docker

yum install -y docker-ce-19.03.8 docker-ce-cli-19.03.8 containerd.iosystemctl enable dockersystemctl start dockerdocker version

1.4.7.5 配置docker加速

1.4.7.5.1 创建docker加速文件夹

sudo mkdir -p /etc/docker

1.4.7.5.2 登录阿里云获取镜像

如果没有的话,需要手动输入“容器镜像服务”。

sudo tee /etc/docker/daemon.json <<-‘EOF’{ “registry-mirrors”: [“https://11l3ppzn.mirror.aliyuncs.com”]}EOF

systemctl daemon-reloadsystemctl restart docker

1.4.8 安装k8s环境

1.4.8.1 安装k8s、kubelet、kubeadm、kubectl(所有节点)

1.4.8.1.1 配置K8S的yum源

cat < /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0repo_gpgcheck=0gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF

1.4.8.1.2 卸载旧版本
yum remove -y kubelet kubeadm kubectl

1.4.8.1.3 安装kubelet、kubeadm、kubectl

yum install -y kubelet-1.17.3 kubeadm-1.17.3 kubectl-1.17.3

必须等待三台主机安装成功。

1.4.8.1.4 开机启动和重启kubelet

systemctl enable kubelet && systemctl start kubelet

注意,如果此时查看kubelet的状态,他会无限重启,等待接收集群命令,和初始化。这个是正常的。

1.4.8.2 初始化所有节点

1.4.8.2.1 创建一个shell脚本内容如下

新建一个shell脚本名称为image.sh

vi images.sh #!/bin/bashimages=( kube-apiserver:v1.17.3 kube-proxy:v1.17.3 kube-controller-manager:v1.17.3 kube-scheduler:v1.17.3 coredns:1.6.5 etcd:3.4.3-0 pause:3.1)for imageName in images[@];dodockerpullregistry.cn−hangzhou.aliyuncs.com/googlecontainers/{images[@]} ; do docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/images[@];dodockerpullregistry.cn−hangzhou.aliyuncs.com/googlec​ontainers/imageNamedone

1.4.8.2.2 将该脚本授予可执行的权限

chmod -R 700 images.sh

1.4.8.2.3 执行该脚本命令

./images.sh 比较慢,耐心等待

1.4.8.2.4 初始化master节点

注意,该操作只是在master节点之后构建环境。

kubeadm init --apiserver-advertise-address=192.168.142.144 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version v1.17.3 --service-cidr=10.96.0.0/16 --pod-network-cidr=10.244.0.0/16

–apiserver-advertise-address=10.12.0.9

这里的地址需要修改成master对应的IP地址。

1.4.8.2.4.1 如果输入以上内容报错:

[ERROR FileContent–proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1

[preflight] If you know what you are doing, you can make a check non-fatal with --ignore-preflight-errors=...

To see the stack trace of this error execute with --v=5 or higher

解决方案:

echo “1” >/proc/sys/net/bridge/bridge-nf-call-iptables

初始化完成。

1.4.8.2.5 配置 kubectl

这里注意的是,一定成初始化成功后面获取复制。

mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown (id−u):(id -u):(id−u):(id -g) $HOME/.kube/config

1.4.8.2.6 部署网络插件

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

1.4.8.2.7 查看节点运行的情况

kubectl get nodes

1.4.8.2.8 查看所有的pod的运行的情况

kubectl get pods -A

这里需要注意的是,必须等所有的状态为Runing才能进行下一步操作。

1.4.8.2.8.1 如果上面操作导致pod有报错:

比如爆

error: the server doesn’t have a resource type “calico-kube-controllers-544658cf79-bv5mj”

这个异常

解决: 可以试下重启一下kubelet服务,然后等待一下,应该就可以了

systemctl restart kubelet

1.4.8.2.9 执行令牌(在从节点操作)

这里注意的是,一定成初始化成功后面获取复制。

kubeadm join 192.168.142.138:6443 --token 8yvi2m.466nhemzvyqcxkny --discovery-token-ca-cert-hash sha256:99a5fdcb4af4dd9c2ee40e48ba420d7630676a77a3c0f2445c260921fdcaf83a 如果在两个从节点运行执行令牌报错: [ERROR FileContent–proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1[preflight] If you know what you are doing, you can make a check non-fatal with --ignore-preflight-errors=...To see the stack trace of this error execute with --v=5 or higher 解决方案,两个从节点都执行以下命令:echo “1” >/proc/sys/net/bridge/bridge-nf-call-iptables
#1、如果超过2小时忘记了令牌,可以这样做``kubeadm token create --print-join-command #打印新令牌kubeadm token create --ttl 0 --print-join-command #创建个永不过期的令牌

加入令牌完成。

1.4.8.2.10 在主节点查看节点运行的情况

kubectl get nodes

1.4.8.2.11 查看所有的pod的运行的情况

kubectl get pods -A

这里需要注意的是,必须等所有的状态为Runing才能进行下一步操作。

1.4.9 搭建NFS作为默认sc(所有节点)

1.4.9.1 配置NFS服务器

yum install -y nfs-utils echo “/nfs/data/ *(insecure,rw,sync,no_root_squash)” > /etc/exports

1.4.9.2 创建nfs服务器目录(主节点作为服务器,主节点操作)

mkdir -p /nfs/data

1.4.9.3 启动nfs服务命令

systemctl enable rpcbindsystemctl enable nfs-serversystemctl start rpcbindsystemctl start nfs-serverexportfs -r

1.4.9.4 检查配置是否生效

exportfs

1.4.9.5 测试Pod直接挂载NFS了(主节点操作)

1.4.9.5.1 在opt目录下创建一个nginx.yaml的文件

vim nginx.yaml

1.4.9.5.2 写入以下的命令

apiVersion: v1kind: Podmetadata: name: vol-nfs namespace: defaultspec: volumes: - name: html nfs: path: /nfs/data #1000G server: 192.168.142.144 #自己的nfs服务器地址 containers: - name: myapp image: nginx volumeMounts: - name: html mountPath: /usr/share/nginx/html/

这里注意:server: 10.12.0.9 #自己的nfs服务器地址

1.4.9.5.3 应用该yaml的pod服务

kubectl apply -f nginx.yaml

1.4.9.5.4 检查该pod是否允许状态

kubectl get pod

kubectl get pods -A

这里需要注意的是,必须等所有的状态为Runing才能进行下一步操作。

1.4.9.5.5 查看nginx的pod的IP访问地址

kubectl get pod -o wide

访问地址: 10.244.107.193

1.4.9.5.6 本地测试访问pod信息

curl 10.244.107.193

这里我们看到的是访问的页面是403,我们可以访问具体页面

我们需要在/nfs/data/下新建一个index.html文件。

cd /nfs/data/vim index.html

1.4.9.5.7 再次测试访问pod信息

curl 10.244.107.193

1.4.10 搭建NFS-Client

服务器端防火墙开放111、662、875、892、2049的 tcp / udp 允许,否则远端客户无法连接。

1.4.10.1 安装客户端工具(node节点操作)

showmount -e 192.168.142.144

该IP地址是master的IP地址。

1.4.10.2 创建同步文件夹

mkdir /root/nfsmountls /root

1.4.10.3 将客户端的/root/nfsmount和/nfs/data/做同步(node节点操作)

mount -t nfs 192.168.142.144:/nfs/data/ /root/nfsmount

10.12.0.9:是nfs的服务器的地址,这里是master的IP地址。

1.4.10.4 查看原来的文件信息(从)机器

cat index.html

1.4.10.5 修改原来的文件信息(主)机器

cat index.html

1.4.10.6 在另外的机器上查看效果

cat index.html

1.4.11 设置动态供应

1.4.11.1 创建provisioner(NFS环境前面已经搭好)

字段名称 填入内容 备注
名称 nfs-storage 自定义存储类名称
NFS Server 192.168.142.147 NFS服务的IP地址
NFS Path /nfs/data NFS服务所共享的路径
1.4.11.1.1 先创建授权(master节点操作)

vim nfs-rbac.yaml 在opt目录下

新建内容如下:

—apiVersion: v1kind: ServiceAccountmetadata: name: nfs-provisioner—kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata: name: nfs-provisioner-runnerrules: - apiGroups: [""] resources: [“persistentvolumes”] verbs: [“get”, “list”, “watch”, “create”, “delete”] - apiGroups: [""] resources: [“persistentvolumeclaims”] verbs: [“get”, “list”, “watch”, “update”] - apiGroups: [“storage.k8s.io”] resources: [“storageclasses”] verbs: [“get”, “list”, “watch”] - apiGroups: [""] resources: [“events”] verbs: [“watch”, “create”, “update”, “patch”] - apiGroups: [""] resources: [“services”, “endpoints”] verbs: [“get”,“create”,“list”, “watch”,“update”] - apiGroups: [“extensions”] resources: [“podsecuritypolicies”] resourceNames: [“nfs-provisioner”] verbs: [“use”]—kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata: name: run-nfs-provisionersubjects: - kind: ServiceAccount name: nfs-provisioner namespace: defaultroleRef: kind: ClusterRole name: nfs-provisioner-runner apiGroup: rbac.authorization.k8s.io—kind: DeploymentapiVersion: apps/v1metadata: name: nfs-client-provisionerspec: replicas: 1 strategy: type: Recreate selector: matchLabels: app: nfs-client-provisioner template: metadata: labels: app: nfs-client-provisioner spec: serviceAccount: nfs-provisioner containers: - name: nfs-client-provisioner image: lizhenliang/nfs-client-provisioner volumeMounts: - name: nfs-client-root mountPath: /persistentvolumes env: - name: PROVISIONER_NAME value: storage.pri/nfs - name: NFS_SERVER value: 192.168.142.144 - name: NFS_PATH value: /nfs/data volumes: - name: nfs-client-root nfs: server: 192.168.142.144 path: /nfs/data

这个镜像中volume的mountPath默认为/persistentvolumes,不能修改,否则运行时会报错。红色的必须是自己的master的IP地址。

1.4.11.1.2 执行创建nfs的yaml文件信息

kubectl apply -f nfs-rbac.yaml

1.4.11.1.3 如果发现pod有问题,想删除pod进行重新kubectl apply-f nfs-rbac.yaml的话,可以参照这个博客文档:

https://blog.csdn.net/qq_43542988/article/details/101277263?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

1.4.11.1.4 查看pod的状态信息

kubectl get pods -A 如果报错:查看报错信息,这个命令:kubectl describe pod xxx -n kube-system

1.4.11.1.5 创建storageclass(master节点操作)

vim storageclass-nfs.yaml apiVersion: storage.k8s.io/v1kind: StorageClassmetadata: name: storage-nfsprovisioner: storage.pri/nfsreclaimPolicy: Delete

1.4.11.1.6 应用storageclass-nfs.yaml文件

kubectl apply -f storageclass-nfs.yaml

1.4.11.1.7 修改默认的驱动

kubectl patch storageclass storage-nfs -p ‘{“metadata”: {“annotations”:{“storageclass.kubernetes.io/is-default-class”:“true”}}}’

kubectl get sc

1.4.12 安装metrics-server

1.4.12.1 准备metrics-server.yaml文件(主节点操作)

vim metrics-server.yaml

1.4.12.2 编写以下的内容

—apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: name: system:aggregated-metrics-reader labels: rbac.authorization.k8s.io/aggregate-to-view: “true” rbac.authorization.k8s.io/aggregate-to-edit: “true” rbac.authorization.k8s.io/aggregate-to-admin: "true"rules:- apiGroups: [“metrics.k8s.io”] resources: [“pods”, “nodes”] verbs: [“get”, “list”, “watch”]—apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata: name: metrics-server:system:auth-delegatorroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:auth-delegatorsubjects:- kind: ServiceAccount name: metrics-server namespace: kube-system—apiVersion: rbac.authorization.k8s.io/v1kind: RoleBindingmetadata: name: metrics-server-auth-reader namespace: kube-systemroleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: extension-apiserver-authentication-readersubjects:- kind: ServiceAccount name: metrics-server namespace: kube-system—apiVersion: apiregistration.k8s.io/v1beta1kind: APIServicemetadata: name: v1beta1.metrics.k8s.iospec: service: name: metrics-server namespace: kube-system group: metrics.k8s.io version: v1beta1 insecureSkipTLSVerify: true groupPriorityMinimum: 100 versionPriority: 100—apiVersion: v1kind: ServiceAccountmetadata: name: metrics-server namespace: kube-system—apiVersion: apps/v1kind: Deploymentmetadata: name: metrics-server namespace: kube-system labels: k8s-app: metrics-serverspec: selector: matchLabels: k8s-app: metrics-server template: metadata: name: metrics-server labels: k8s-app: metrics-server spec: serviceAccountName: metrics-server volumes: # mount in tmp so we can safely use from-scratch images and/or read-only containers - name: tmp-dir emptyDir: {} containers: - name: metrics-server image: mirrorgooglecontainers/metrics-server-amd64:v0.3.6 imagePullPolicy: IfNotPresent args: - --cert-dir=/tmp - --secure-port=4443 - --kubelet-insecure-tls - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname ports: - name: main-port containerPort: 4443 protocol: TCP securityContext: readOnlyRootFilesystem: true runAsNonRoot: true runAsUser: 1000 volumeMounts: - name: tmp-dir mountPath: /tmp nodeSelector: kubernetes.io/os: linux kubernetes.io/arch: “amd64”—apiVersion: v1kind: Servicemetadata: name: metrics-server namespace: kube-system labels: kubernetes.io/name: “Metrics-server” kubernetes.io/cluster-service: "true"spec: selector: k8s-app: metrics-server ports: - port: 443 protocol: TCP targetPort: main-port—apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: name: system:metrics-serverrules:- apiGroups: - “” resources: - pods - nodes - nodes/stats - namespaces - configmaps verbs: - get - list - watch—apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata: name: system:metrics-serverroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:metrics-serversubjects:- kind: ServiceAccount name: metrics-server namespace: kube-system

1.4.12.3 应用该文件pod

kubectl apply -f metrics-server.yaml

1.4.12.4 查看部署的应用信息状态

kubectl get pod -A

1.4.12.5 查看系统的监控状态

kubectl top nodes 如果运行kubectl top nodes这个命令,爆metrics not available yet 这个命令还没有用,那就稍等一会,就能用了

这里,kubesphere3.0的前置环境全部结束。

1.5 安装kubesphere v3.0.0

1.5.1 文档地址

https://kubesphere.com.cn/

1.5.2 部署文档地址

https://kubesphere.com.cn/docs/quick-start/minimal-kubesphere-on-k8s/

1.5.3 安装步骤说明(master节点)

1.5.3.1 安装集群配置文件

1.5.3.1.1 准备配置文件cluster-configuration.yaml

vim cluster-configuration.yaml

1.5.3.1.2 编写以下的内容配置

—apiVersion: installer.kubesphere.io/v1alpha1kind: ClusterConfigurationmetadata: name: ks-installer namespace: kubesphere-system labels: version: v3.0.0spec: persistence: storageClass: “” # If there is not a default StorageClass in your cluster, you need to specify an existing StorageClass here. authentication: jwtSecret: “” # Keep the jwtSecret consistent with the host cluster. Retrive the jwtSecret by executing “kubectl -n kubesphere-system get cm kubesphere-config -o yaml | grep -v “apiVersion” | grep jwtSecret” on the host cluster. etcd: monitoring: true # Whether to enable etcd monitoring dashboard installation. You have to create a secret for etcd before you enable it. endpointIps: 10.12.0.9 # etcd cluster EndpointIps, it can be a bunch of IPs here. port: 2379 # etcd port tlsEnable: true common: mysqlVolumeSize: 20Gi # MySQL PVC size. minioVolumeSize: 20Gi # Minio PVC size. etcdVolumeSize: 20Gi # etcd PVC size. openldapVolumeSize: 2Gi # openldap PVC size. redisVolumSize: 2Gi # Redis PVC size. es: # Storage backend for logging, events and auditing. # elasticsearchMasterReplicas: 1 # total number of master nodes, it’s not allowed to use even number # elasticsearchDataReplicas: 1 # total number of data nodes. elasticsearchMasterVolumeSize: 4Gi # Volume size of Elasticsearch master nodes. elasticsearchDataVolumeSize: 20Gi # Volume size of Elasticsearch data nodes. logMaxAge: 7 # Log retention time in built-in Elasticsearch, it is 7 days by default. elkPrefix: logstash # The string making up index names. The index name will be formatted as ks-<elk_prefix>-log. console: enableMultiLogin: true # enable/disable multiple sing on, it allows an account can be used by different users at the same time. port: 30880 alerting: # (CPU: 0.3 Core, Memory: 300 MiB) Whether to install KubeSphere alerting system. It enables Users to customize alerting policies to send messages to receivers in time with different time intervals and alerting levels to choose from. enabled: true auditing: # Whether to install KubeSphere audit log system. It provides a security-relevant chronological set of records,recording the sequence of activities happened in platform, initiated by different tenants. enabled: true devops: # (CPU: 0.47 Core, Memory: 8.6 G) Whether to install KubeSphere DevOps System. It provides out-of-box CI/CD system based on Jenkins, and automated workflow tools including Source-to-Image & Binary-to-Image. enabled: true jenkinsMemoryLim: 2Gi # Jenkins memory limit. jenkinsMemoryReq: 1500Mi # Jenkins memory request. jenkinsVolumeSize: 8Gi # Jenkins volume size. jenkinsJavaOpts_Xms: 512m # The following three fields are JVM parameters. jenkinsJavaOpts_Xmx: 512m jenkinsJavaOpts_MaxRAM: 2g events: # Whether to install KubeSphere events system. It provides a graphical web console for Kubernetes Events exporting, filtering and alerting in multi-tenant Kubernetes clusters. enabled: true ruler: enabled: true replicas: 2 logging: # (CPU: 57 m, Memory: 2.76 G) Whether to install KubeSphere logging system. Flexible logging functions are provided for log query, collection and management in a unified console. Additional log collectors can be added, such as Elasticsearch, Kafka and Fluentd. enabled: true logsidecarReplicas: 2 metrics_server: # (CPU: 56 m, Memory: 44.35 MiB) Whether to install metrics-server. IT enables HPA (Horizontal Pod Autoscaler). enabled: false monitoring: # prometheusReplicas: 1 # Prometheus replicas are responsible for monitoring different segments of data source and provide high availability as well. prometheusMemoryRequest: 400Mi # Prometheus request memory. prometheusVolumeSize: 20Gi # Prometheus PVC size. # alertmanagerReplicas: 1 # AlertManager Replicas. multicluster: clusterRole: none # host | member | none # You can install a solo cluster, or specify it as the role of host or member cluster. networkpolicy: # Network policies allow network isolation within the same cluster, which means firewalls can be set up between certain instances (Pods). # Make sure that the CNI network plugin used by the cluster supports NetworkPolicy. There are a number of CNI network plugins that support NetworkPolicy, including Calico, Cilium, Kube-router, Romana and Weave Net. enabled: true notification: # Email Notification support for the legacy alerting system, should be enabled/disabled together with the above alerting option. enabled: true openpitrix: # (2 Core, 3.6 G) Whether to install KubeSphere Application Store. It provides an application store for Helm-based applications, and offer application lifecycle management. enabled: true servicemesh: # (0.3 Core, 300 MiB) Whether to install KubeSphere Service Mesh (Istio-based). It provides fine-grained traffic management, observability and tracing, and offer visualization for traffic topology. enabled: true

endpointIps: 10.12.0.9:master节点的地址。

1.5.3.1.3 准备配置文件kubesphere-installer.yaml文件

1.5.3.1.4 分别执行两个文件

kubectl apply -f kubesphere-installer.yamlkubectl apply -f cluster-configuration.yaml

1.5.3.1.5 监控安装的日志信息

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

1.5.3.1.6 查看pod启动状态信息

kubectl get pods -A

需要等待漫长的时间。喝杯茶,抽支烟。

1.5.4 访问验证是否安装成功

访问地址:

http://192.168.142.141:30880/login

帐号:admin

密码:P@88w0rd

1.5.4.1.1.1 解决prometheus一直没能Running的问题,缺少证书

如等待了半个小时左右还是没能Running,特别是monitoring这两个有问题,这个是监控用的

那么说明出现问题了,我们来查看一下

kubectl describe pod prometheus-k8s-0 -n kubesphere-monitoring-system

说没有这个secret-kube-etcd-client-certs这个证书

看一下kubesphere的整个apiserver

ps -ef|grep kube-apiserver

这个apiserver就会打印整个证书位置

说明是有这些证书文件的,但是kubesphere它不知道,它相当于依赖了我们系统里面的

这些证书文件就是在这些位置:

–etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt

–etcd-certfile=/etc/kubernetes/pki/apiserver-etcd-client.crt

–etcd-keyfile=/etc/kubernetes/pki/apiserver-etcd-client.key

解决方案:把这个命令复制到主节点运行即可

kubectl -n kubesphere-monitoring-system create secret generic kube-etcd-client-certs --from-file=etcd-client-ca.crt=/etc/kubernetes/pki/etcd/ca.crt --from-file=etcd-client.crt=/etc/kubernetes/pki/apiserver-etcd-client.crt --from-file=etcd-client.key=/etc/kubernetes/pki/apiserver-etcd-client.key

表示这个secret已经创建了

可以用命令查看是否创建成功:

kubectl get secret -A //这个命令的意思就是获取所有系统里面的secret

只要证书一创建,那么我们这个prometheus很快就可以了

如果还是不行,把这个 prometheus-k8s-0这个pod删掉

命令:kubectl delete pod prometheus-k8s-0 -n kubesphere-monitoring-system

然后让它再拉取一个就可以了

再把 prometheus-k8s-1这个pod删掉,也让它重新拉取

命令:kubectl delete pod prometheus-k8s-1 -n kubesphere-monitoring-system

那么此时,我们可以看到kubesphere的全部已经搞好了,监控也正常了。

kubesphere3.0的安装完整文档相关推荐

  1. Codis 3.0.1 安装使用文档(官方)

    Codis 使用文档 Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有显著区别 (不支持的命令列表) ...

  2. linux上搭载was应用上传中文文件,受支持的Linux操作系统和WAS ND 9.0安装部署文档的资料说明...

    本文档的主要内容详细介绍的是受支持的Linux操作系统和WAS ND 9.0安装部署文档的资料说明. 从was9.0开始支持的最低版本的red hat Linux系统为6.6且仅支持64位操作系统 计 ...

  3. 完整企业官网源码,前端基于Vue+ElementUI,后台基于基于core3 webapi,含数据库文件,含详情安装部署文档

    完整企业官网源码,前端基于Vue+ElementUI,后台基于基于core3 webapi,含数据库文件,含详情安装部署文档 完整代码下载地址:完整企业官网源码 某工程管理有限公司企业官网 前端 新版 ...

  4. 如何使用 snap 包在 Linux 上安装 ONLYOFFICE 文档

    ONLYOFFICE 文档是一款符合 GNU AGPL v3.0 的开源办公套件.其中包含基于 Web 的查看器和协作编辑器,可用于处理文本文档.电子表格.演示文稿以及兼容 OOXML 格式的表格. ...

  5. gnokii 短信猫 中文安装使用文档

    gnokii 短信猫 中文安装使用文档 2010年11月19日 - admin 8月份做的一个东东,重新整理了一下发上来.当日后使用文档! 环境: centos 5.2,短信猫设备: wave 安装软 ...

  6. gnokii 中文安装使用文档

    gnokii 中文安装使用文档 2010年11月19日 - admin 8月份做的一个东东,重新整理了一下发上来.当日后使用文档! 环境: centos 5.2,设备: wave 安装软件地址: ht ...

  7. Spring 2.5 jar 所有开发包及完整文档及项目开发实例

    Spring 2.5 jar 所有开发包及完整文档及项目开发实例 spring jar 包详解spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了 spring-mock ...

  8. centos7安装rabbitmq_rabbitmq v3.7.16安装部署文档

    RabbitMQ v3.7.16安装部署文档 部署安装过程严格按照官方文档的流程. 前言 软件版本 os centos7(ubuntu也适用,需要替换部分命令) rabbitmq v3.7.16 (r ...

  9. Qt5.13.0虚拟键盘 使用文档说明及函数说明 (一)构建 build

    首先之前的工作都是为了想验证虚拟键盘的使用,才有了之前编译x11 .arm等qt的步骤. 在到这之前的构建环境,我说认真的,真的烦的要死,每次构建用的时间又多,配置完了编译会出一大堆error,加上公 ...

最新文章

  1. JavaScript内存释放
  2. 文件包含漏洞不能包含php,ThinkPHP5漏洞分析之文件包含
  3. linux替换windows换行符_vim编辑器的查找与替换
  4. django 标签的使用
  5. maven pom 文件的 scope,scope=system 时打包打不进
  6. 微信隐藏功能关闭X5内核
  7. 【dubbo异常处理】Fail to decode request due to: RpcInvocation
  8. 一看就会 PicGo+gitee+Tyora个人图库搭建
  9. 指纹存取控制系统的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  10. 最牛逼的java代码_分享史上java最牛逼,最简短的代码
  11. 10万行代码电商项目
  12. MFP450 基础飞行平台问世,支持室内室外无GPS环境飞行
  13. PHPMailer远程命令执行漏洞复现
  14. 代码:法向质心法提取线激光条纹中心线(CPP+OpenCV)
  15. Kubernetes-调度、节点亲和反亲和、pod亲和反亲和、Taints污点的处理
  16. 刮刮彩票 (20 分)
  17. nodejs京东接口分析系列-实现京东自动化功能 之 商品信息监控
  18. elasticsearch DSL查询之should查询
  19. 【C++】Heather银行对顾客排队等待的时间进行估测问题 《C++ Primer Plus》12.7 队列模拟 学习笔记
  20. 世界需要简化第五篇:阅读本文需要有基础,仅一文教你快速应用FOC的SVPWM实现三相异步电机调速?快速学会使用著名的电机SVPWM调速控制算法——史上最简单易懂,算法经高度抽象简化,所有下标经仔细核对

热门文章

  1. Debug Tensorflow :Two checkpoint references resolved to different objects
  2. 【机器学习】九种顶流回归算法及实例总结
  3. 【Python】Python语言学习:面向对象编程,类和对象,封装、继承和多态
  4. 一文深入浅出cv中的Attention机制
  5. 【机器学习基础】一文归纳AI数据增强之法
  6. 【科普】boy and girl,你是不是对算法工程师有误解
  7. 【机器学习基础】数学推导+纯Python实现机器学习算法25:CatBoost
  8. 免费报名丨网易、腾讯、唯品会等100位名企超资深营销增长官,约你闭门“搞事情”...
  9. MCtalk教育创业者说:学吧课堂K12领域转型突围之路
  10. MySQL-基本的SELECT语句