Centos7 搭建k8s集群

准备

  • 至少三台服务器,系统干净防止冲突
  • 密码全部相同,方便安装k8s
  • 最好是云服务器,方便重装
  • 没有特别说明的命令全都在k8s-master

服务器添加ssh访问,能够ssh访问的可以跳过

vi /etc/hosts.allow // 在末尾添加 sshd:ALL

挂载数据盘,已经挂载的可以跳过

  • 查看挂载,数据盘一般是/dev/vdb
fdisk -l
  • 分区
fdisk  /dev/vdb
//n->p->1->回车->回车->w
  • 写入文件系统
mkfs.ext4 /dev/vdb1
  • 挂载节点
//挂载在 /data目录
mkdir /data
mount /dev/vdb1  /data
  • 查看
df -h
  • 开启自动挂载
vi /etc/fstab
//打开后,在最后一行加入以下代码;
/dev/vdb1 /data ext4 defaults 0 1 

修改主机名

  • 这里准备了六台主机
hostnamectl set-hostname k8s-master1
hostnamectl set-hostname k8s-master2
hostnamectl set-hostname k8s-master3

hostnamectl set-hostname k8s-work1
hostnamectl set-hostname k8s-work2
hostnamectl set-hostname k8s-work3

使用sealos部署k8s集群

  • 文档地址,以下关于sealos说明来自该文档中

https://sealyun.com/instructions

  • 在master1上执行
# 下载并安装sealos, sealos是个golang的二进制工具,直接下载拷贝到bin目录即可, release页面也可下载
wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/latest/sealos && \
    chmod +x sealos && mv sealos /usr/bin 

# 下载离线资源包
wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/7b6af025d4884fdd5cd51a674994359c-1.18.0/kube1.18.0.tar.gz

# 安装一个三master的kubernetes集群
sealos init --passwd 123456 \
    --master 192.168.0.2  --master 192.168.0.3  --master 192.168.0.4  \
    --node 192.168.0.5 \
    --pkg-url /root/kube1.18.0.tar.gz \
    --version v1.18.0 
  • 建议使用1.18.6的版本,可以安装kubesphere
  • 查看k8s节点情况,全部为ready可以进行下一步
kubectl get nodes

NAME          STATUS   ROLES    AGE   VERSION
k8s-master1   Ready    master   17h   v1.18.6
k8s-master2   Ready    master   17h   v1.18.6
k8s-master3   Ready    master   17h   v1.18.6
k8s-work1     Ready    <none>   17h   v1.18.6
k8s-work2     Ready    <none>   17h   v1.18.6
k8s-work3     Ready    <none>   17h   v1.18.6

安装longhorn

  • 在所有节点执行
yum install -y iscsi-initiator-utils
systemctl enable --now iscsid
  • 去除master节点的污点,让其能够调度pod
kubectl taint nodes --all node-role.kubernetes.io/master-  
  • 安装helm
version=v3.3.1
curl -LO https://repo.huaweicloud.com/helm/${version}/helm-${version}-linux-amd64.tar.gz
tar -zxvf helm-${version}-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm && rm -rf linux-amd64
  • helm部署longhorn
helm repo add longhorn https://charts.longhorn.io
helm repo update
kubectl create namespace longhorn-system

helm install longhorn \
  --namespace longhorn-system \
  --set defaultSettings.defaultDataPath="/data/longhorn/" \
  --set defaultSettings.defaultReplicaCount=3 \
  --set service.ui.type=NodePort \
  --set service.ui.nodePort=30890 \
  longhorn/longhorn
  • 查看部署情况
helm -n longhorn-system ls
kubectl -n longhorn-system get pods

安装kubesphere

  • 下载这两个文件
 https://github.com/kubesphere/ks-installer/releases/download/v3.0.0/kubesphere-installer.yaml
 https://github.com/kubesphere/ks-installer/releases/download/v3.0.0/cluster-configuration.yaml
  • 部署
kubectl apply -f kubesphere-installer.yaml
kubectl apply -f cluster-configuration.yaml
  • 查看部署log
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
kubesphere
  • 查看部署pods
kubectl get pods -A | grep kubesphere
  • 默认账户
admin/P@88w0rd
  • 查看某个pod日志
kubectl -n kubesphere-system describe po etcd-65796969c7-bcdzw

推荐阅读更多精彩内容