• 使用sealos快捷搭建kubenetes集群


    sealos官网 Installation | sealos

    一、下载安装sealos

    我们使用binary方式安装:

    1. wget https://github.com/labring/sealos/releases/download/v4.0.0/sealos_4.0.0_linux_amd64.tar.gz \
    2. && tar zxvf sealos_4.0.0_linux_amd64.tar.gz sealos && chmod +x sealos && mv sealos /usr/bin

    如果网络不稳定的话,会发现执行上面的命令后,出现如下所示:

    多执行几次,就会成功:

    二、创建集群

    1、使用 ip addr 查看三台机器的ip地址

     我这里三台机器的ip分别是:192.168.56.100  , 192.168.56.10 ,192.168.56.102

    2、得到Clusterfile文件

    所以这里我的生成集群文件的命令是:

    1. sealos gen labring/kubernetes:v1.24.0 labring/calico:v3.22.1 \
    2. --masters 192.168.56.100 \
    3. --nodes 192.168.56.101,192.168.56.102 \
    4. --passwd xxx > Clusterfile

    注意:这里的passwd后面的xxx是你三台linux机器的root对应的密码

    上面的命令执行完毕会得到一个Clusterfile文件

     3、按照Clusterfile文件安装集群:

    sealos apply -f Clusterfile

    这一步需要一些时间,需要耐心等待,如果网络不好,拉取kubenetes镜像时会很慢,我这里第一次拉取了很长时间都没成功

    看反复试了好多次,这会网络才稳定,如果时间长进度不懂了,就停掉,重新来一次,因为拉取镜像是从docker.io上拉取,这个是国外网站,经常会出现这个问题,所以需要耐心等待

    当看到这个图标,且前面没有发现红色的报错提示,说明就成功了

     4、查看modes集群

    kubectl get nodes -o wide

    三、安装管理页面,以便观察集群详细情况(不推荐

     1、在主控节点执行以下命令,即可完成kuboard安装

    kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
    

    2、用watch命令刷新部署状态:

    watch kubectl get pods -n kuboard
    

    如果发现启动没有成功,使用如下命令查看日志

    kubectl logs <podname> -n <namespaces>

    安装管理界面使用此种方法安装了几次,都是报2381端口被占用,也不知道是什么情况,于是放弃这种方式,换一种

    四、安装k8s-dashboard

    使用以下命令可以查看k8s目前提供的服务

     kubectl get svc --all-namespaces

    创建kubernetes-dashboard服务

    sealos run docker.io/labring/kubernetes-dashboard:v1.0.8

    使用上面这个命令,如果能够顺利看到下面的截图,就说明成功了

     

    使用kubectl get ns命令查看多了一个namespace: kubernetes-dashboard

    kubectl get ns

     使用 kubectl get pods --all-namespaces 命令查看多了两个pods

    kubectl get pods --all-namespaces

     查看kubernetes-dashboard下面的所有信息

    kubectl get all -n kubernetes-dashboard

    创建k8s服务器代理

    kubectl port-forward -n kubernetes-dashboard --address 0.0.0.0 svc/kubernetes-dashboard 8001:443

    原因是 vagrant 创建的box,eth0 ip默认是10开头的。eth1才是可以互联的IP。
    因此需要指定一下。

    在master 和 worker (node)上都做修改
    ubuntu中,打开:vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

    添加如下内容:–node-ip

    KUBELET_EXTRA_ARGS=–node-ip=192.168.56.100

    注:192.168.56.100为eth1的IP。

    重启kubelet

    systemctl restart kubelet

    使用命令查看

    kubectl get nodes -o wide

    用此种方式试了还是不行 ,

    又通过下面的方式才得以解决:

    三台机器都要执行

    在 /etc/hosts 配置IP地址和主机名映射(主机点和所有子节点)

    vi /etc/hosts
    1. # 添加 IP地址和主机名映射, 例如
    2. 192.168.56.100 kube-node1

    第二台机器:

    1. # 添加 IP地址和主机名映射, 例如
    2. 192.168.56.101 kube-node2

    第三台机器

    1. # 添加 IP地址和主机名映射, 例如
    2. 192.168.56.102 kube-node3

    使用systemctl restart docker后再次查看

    systemctl restart docker

    发现 INTERNAL-IP显示正常了

    创建k8s代理:

    kubectl port-forward -n kubernetes-dashboard svc/kubernetes-dashboard 8443:443 --address 0.0.0.0

     输入上面的命令后,一直处于等待状态,接下来我们需要打开浏览器去访问,我这里写的端口是8443,所在机器是192.168.56.100,所以浏览器需要输入:

    https://192.168.56.100:8443

    这里注意,必须是https 才行,当出现警告时,选择忽略警告,继续访问

     上面执行了sealos run docker.io/labring/kubernetes-dashboard:v1.0.8命令后,生成了一个token,这里输入即可

    我这里输入后发现提示如下:

    由于我获取token到使用时间太长了,所以这个token失效,需要重新获取

    五、获取token

     K8S有两种用户:User 和 Service Account,User 给人用,Service Account 给进程用,让进程有相关权限,Dashboard 是一个进程,我们就可以创建一个Service Account 给它。

    上面的token无效后,找了很多资料,后来发现:

    kubernetes v1.24.0 更新之后进行创建 ServiceAccount 不会自动生成 Secret 需要对其手动创建

    1、创建 ServiceAccount

    1. cat<
    2. apiVersion: v1
    3. kind: ServiceAccount
    4. metadata:
    5. name: yzy
    6. namespace: default
    7. EOF

    2、 查看 ServiceAccount

    kubectl get serviceaccounts yzy

    3、 查看 ServiceAccount 详细详细,没有对 Token 进行创建

     kubectl describe serviceaccounts yzy

     4、创建 Secret 资源并与 ServiceAccount 关联

    1. cat<<EOF | kubectl apply -f -
    2. apiVersion: v1
    3. kind: Secret
    4. type: kubernetes.io/service-account-token
    5. metadata:
    6. name: yzy
    7. annotations:
    8. kubernetes.io/service-account.name: "yzy"
    9. EOF

     5、再次查看 ServiceAccount 已对 Secret 关联

    kubectl describe serviceaccounts yzy

     6、查看 Secret 详细详细,复制token输入登录页面

    kubectl describe secrets yzy

    复制token,输入浏览器的token,后登录

     到此安装完毕

    --------------------------------问题又来了

    问题

    控制台什么都不让看,消息提示说是被禁止访问了,这个账户权限不够

    试了一些方法但最终还是没有解决,所以我还了一个版本试试

    -------------------------------

    重新搭建dashboard(成功)

    1、执行命令:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
    

    2、查看pod的状态:

    kubectl get svc,pods  -n kubernetes-dashboard
    

     由于我之前安装过另一个版本,所以出现了两组,running的是之前的,ContainerCreateing的是刚刚的

    又过了一会再次执行,发现剩下三个了

    在等一会在执行,发现已经正常了

     3、 查看 ServiceAccount 详细详细,没有对 Token 进行创建

     

    4、创建secret.yaml,并执行 kubectl apply -f secret.yaml

    1. apiVersion: v1
    2. kind: Secret
    3. type: kubernetes.io/service-account-token
    4. metadata:
    5. name: admin-user
    6. namespace: kubernetes-dashboard
    7. annotations:
    8. kubernetes.io/service-account.name: "admin-user"
    kubectl apply -f secret.yaml

    5、再次查看ServiceAccount,发现tokens已经有值了

    kubectl describe serviceaccount admin-user -n kubernetes-dashboard

    6、查看 Secret 详细详细,复制token输入登录页面

    kubectl describe secrets admin-user -n kubernetes-dashboard

    将此token值复制到浏览器中再次输入发现一切正常

    到此大功告成 

    TOKEN失效

    重新获取一个token

    如果token失效了,则可以使用命令在创建一个

    kubectl describe secrets admin-user -n kubernetes-dashboard

    可以在控制台把tokne的失效时间延长,我这里设置的是30天(2592000s)

    dashboard控制台端口映射

    每次登录dashboard控制台,需要先执行  kubectl port-forward -n kubernetes-dashboard svc/kubernetes-dashboard 8443:443 --address 0.0.0.0  将端口映射出来,太麻烦了,直接编辑下将端口映射好

    修改service配置,

    找到"type: ClusterIP",将ClusterIP改成NodePort

    kubectl edit service kubernetes-dashboard --namespace=kubernetes-dashboard

    然后查看服务端口:

    kubectl get service -A

     

  • 相关阅读:
    一次对requirements环境的配置
    # ubuntu22下配置postgresql远程访问
    FPGA与人工智能泛谈-01
    单调栈-42. 接雨水
    STL教程6-deque、stack、queue、list容器
    java基于Spring boot+vue的线上教学考试平台 elementui
    Web 应用程序安全测试指南
    二维码智慧门牌管理系统升级解决方案:要素类型
    Linux 的常用命令大全
    FPGA硬件工程师Verilog面试题(三)
  • 原文地址:https://blog.csdn.net/u011159417/article/details/126887980