CentOS安装K8S-Kuboard

前言

安装好docker

dashborad 没有成功

我这里有

  • 192.168.222.150 master
  • 192.168.222.151 node
  • 192.168.222.152 node

Node节点

Kuboard安装方式

这里只做记录:点击参考官方文档

这里需要:

  • 192.168.222.150 k8s master
  • 192.168.222.151 k8s node
  • 192.168.222.152 k8s node
  • 192.168.222.251 Docker 安装 Kuboard-Sprayk8s不能安装这台设备上

注意:如果是虚拟机,必须是固定IP

  • kubelet 节点通信
  • kubectl 集群管理工具

安装Kuboard-Spray

关闭防火墙

1
2
3
4
sudo systemctl stop firewalld
sudo systemctl disable firewalld
# 关闭selinux
setenforce 0

加载镜像

1
2
3
4
5
6
7
8
9
10
docker run -d \
--privileged \
--restart=unless-stopped \
--name=kuboard-spray \
-p 80:80/tcp \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/kuboard-spray-data:/data \
swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard-spray:latest-amd64
# 如果抓不到这个镜像,可以尝试一下这个备用地址:
# eipwork/kuboard-spray:latest-amd64

http://192.168.222.251,输入用户名 admin,默认密码 Kuboard123,即可登录 Kuboard-Spray 界面

加载资源

系统设置 –> 资源包管理 界面,找到最新版本(需要的版本点击导入),点击标题中的加载xxx操作。

离线导入请参考官方文档

规划集群

集群管理 界面,点击 添加集群安装计划 按钮,填写集群名称和资源包:

image-20220522203628018

注意事项

  • 最少的节点数量是 1 个;

  • ETCD 节点、控制节点的总数量必须为奇数;

  • 全局设置 标签页,可以设置节点的通用连接参数,例如所有的节点都使用相同的 ssh 端口、用户名、密码,则共同的参数只在此处设置即可;

  • 在节点标签页,如果该节点的角色包含 etcd 则必须填写 ETCD 成员名称 这个字段;

  • 如果您 KuboardSpray 所在节点不能直接访问到 Kubernetes 集群的节点,您可以设置跳板机参数,使 KuboardSpray 可以通过 ssh 访问集群节点。

  • 集群安装过程中,除了已经导入的资源包以外,还需要使用 yum 或 apt 指令安装一些系统软件,例如 curl, rsync, ipvadm, ipset, ethtool 等,此时要用到操作系统的 apt 软件源或者 yum 软件源。全局设置标签页中,可以引导您完成 apt / yum 软件源的设置,您可以:

    • 使用节点操作系统已经事先配置的 apt / yum 源,或者
    • 在安装过程中自动配置节点的操作系统使用指定的软件源
  • 如果您使用 docker 作为集群的容器引擎,还需要在全局设置标签页指定安装 docker 用的 apt / yum 源。

    如果您使用 containerd 作为容器引擎,则无需配置 docker 的 apt / yum 源,containerd 的安装包已经包含在 KuboardSpray 离线资源包中。

配置镜像源

只有一个 aliyunCentOS源的路径是新的,其它在添加时都能找到。

强烈建议配在操作系统里。镜像源使用操作系统默认参考配置

注意:虚拟机需要挂载ISO镜像 mount /dev/cdrom /mnt/cdrom

否则可能会报错

image-20220522212745114

image-20220522205725154

全局配置

建议默认配置,镜像源使用操作系统默认参考配置

节点配置

image-20220522210928019

开始安装

点击保存,然后点击安装/设置集群

image-20220522214914299

访问集群

界面给出了三种方式可以访问 kubernetes 集群:

  • 在集群主节点上执行 kubectl 命令
  • 获取集群的 .kubeconfig 文件
  • 将集群导入到 kuboard管理界面

image-20220522215445220

也可以安装 portainer.io

安装k8s管理工具

这里使用:poerainer

安装在 192.168.222.150

数据持久化

查看 StorageClass

1
kubectl get sc

如果是 No resources found 则需要创建一个。

创建 StorageClass

https://blog.csdn.net/huwh_/article/details/96016423

https://kubernetes.io/docs/concepts/storage/storage-classes/

https://docs.portainer.io/start/install/server/kubernetes/baremetal

设置 StorageClass为默认值

1
kubectl patch storageclass maxzhao-cluster-storage-class -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

deploy use yaml manifests

1
2
3
4
# 社区版
kubectl apply -n portainer -f https://downloads.portainer.io/ce2-13/portainer.yaml
#
kubectl patch deployments -n portainer portainer -p '{"spec": {"template": {"spec": {"nodeSelector": {"kubernetes.io/master-150": "'$(kubectl get pods -n portainer -o jsonpath='{ ..nodeName }')'"}}}}}' || (echo Failed to identify current node of portainer pod; exit 1)

也可以使用 portainerhelm

1
2
3
4
helm repo add portainer https://portainer.github.io/k8s/
helm repo update
# 社区版
helm install --create-namespace -n portainer portainer portainer/portainer --set tls.force=true

https://localhost:30779/ or http://localhost:30777/

重启虚拟机

请参考Kuboard中的介绍

Worker节点不能

可能是IP变化引起的,需要固定IP后重装集群。

许多Pod一直Crash或不能正常访问

1
kubectl get pods --all-namespaces

重启后会发现许多 Pod 不在 Running 状态,此时,请使用如下命令删除这些状态不正常的 Pod。通常,您的 Pod 如果是使用 Deployment、StatefulSet 等控制器创建的,kubernetes 将创建新的 Pod 作为替代,重新启动的 Pod 通常能够正常工作。

1
kubectl delete pod <pod-name> -n <pod-namespece>

系统配置

关闭防火墙

1
2
3
4
5
6
7
8
9
10
sudo systemctl stop firewalld
sudo systemctl disable firewalld
# 关闭selinux
setenforce 0
# 永久
sed -i 's/enforcing/disabled/' /etc/selinux/config
# 关闭swap(k8s禁止虚拟内存以提高性能)
swapoff -a
#永久
sed -ri 's/.*swap.*/#&/' /etc/fstab

Docker镜像

1
sudo vim /etc/docker/daemon.json

改为:

1
2
3
4
5
{
"registry-mirrors": ["https://aj2rgad5.mirror.aliyuncs.com","https://docker.mirrors.ustc.edu.cn"],
"dns": ["8.8.8.8", "8.8.4.4"],
"exec-opts": ["native.cgroupdriver=systemd"]
}

远程访问:"hosts": ["unix:///var/run/docker.sock", "tcp://127.0.0.1:2375"]

配置 k8s 镜像

1
sudo vim /etc/yum.repos.d/kubernetes.repo

写入

1
2
3
4
5
6
7
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

刷新

1
2
# 由于官网未开放同步方式, 可能会有索引gpg检查失败的情况
# sudo yum clean all && sudo yum makecache

华为云镜像

1
2
3
4
5
6
7
8
[kubernetes]
name=Kubernetes
baseurl=https://repo.huaweicloud.com/kubernetes/yum/repos/kubernetes-el7-$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://repo.huaweicloud.com/kubernetes/yum/doc/yum-key.gpg
https://repo.huaweicloud.com/kubernetes/yum/doc/rpm-package-key.gpg

卸载集群

kubectl config delete-cluster 删除对集群的本地引用。

删除节点

使用适当的凭证与控制平面节点通信,运行:

1
kubectl drain <node name> --delete-emptydir-data --force --ignore-daemonsets

在删除节点之前,请重置 kubeadm 安装的状态:

1
kubeadm reset

重置过程不会重置或清除 iptables 规则或 IPVS 表。如果你希望重置 iptables,则必须手动进行:

1
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

如果要重置 IPVS 表,则必须运行以下命令:

1
ipvsadm -C

现在删除节点:

1
kubectl delete node <node name>

如果你想重新开始,只需运行 kubeadm initkubeadm join 并加上适当的参数。

附录

CentOS7镜像

1
2
3
4
5
6
7
8
# 备份
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 https://mirrors.aliyun.com/repo/Centos-7.repo
# 或者
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 生成缓存
yum makecache

Docker

1
2
3
4
5
6
7
# 需要挂载 ISO 镜像
sudo mkdir /mnt/cdrom
sudo mount /dev/cdrom /mnt/cdrom/
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

使用阿里云

1
2
3
4
5
6
7
8
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast

Docker镜像加速

手动修改

1
2
mkdir /etc/docker
vim /etc/docker/daemon.json

写入

1
2
3
4
5
6
7
8
9
10
{
"registry-mirrors": [
"https://aj2rgad5.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"https://registry.cn-hangzhou.aliyuncs.com",
"https://registry.docker-cn.com",
"https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com"
],
"dns": ["8.8.8.8", "8.8.4.4"]
}

Spray安装后使用脚本

可以使用任意一个地址

1
2
3
4
5
6
7
8
9
10
11
12
13
# Docker中国 mirror
# export REGISTRY_MIRROR="https://registry.docker-cn.com"
# 腾讯云 docker hub mirror
# export REGISTRY_MIRROR="https://mirror.ccs.tencentyun.com"
# 华为云镜像
# export REGISTRY_MIRROR="https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com"
# DaoCloud 镜像
# export REGISTRY_MIRROR="http://f1361db2.m.daocloud.io"
# 阿里云 docker hub mirror
export REGISTRY_MIRROR=https://registry.cn-hangzhou.aliyuncs.com
curl -sSL https://kuboard.cn/install-script/set_mirror.sh | sh -s ${REGISTRY_MIRROR}

systemctl restart kubelet # 假设您安装了 kubenetes

查看修改结果

1
docker info

image-20220522214702999

本文地址: https://github.com/maxzhao-it/blog/post/9c2c35af/