当前位置:   article > 正文

使用sealos快捷搭建kubenetes集群_sealos clusterfile

sealos clusterfile

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<<EOF | kubectl apply -f -
  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

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/276053
推荐阅读
  

闽ICP备14008679号