使用sealos快捷搭建kubenetes集群

sealos官网 Installation | sealos

一、下载安装sealos

我们使用binary方式安装:

wget https://github.com/labring/sealos/releases/download/v4.0.0/sealos_4.0.0_linux_amd64.tar.gz \
   && 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文件

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

sealos gen labring/kubernetes:v1.24.0 labring/calico:v3.22.1 \
  --masters 192.168.56.100 \
  --nodes 192.168.56.101,192.168.56.102 \
  --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
# 添加 IP地址和主机名映射, 例如
192.168.56.100 kube-node1

第二台机器:

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

第三台机器

# 添加 IP地址和主机名映射, 例如
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

cat<<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
  name: yzy
  namespace: default
EOF

2、 查看 ServiceAccount

kubectl get serviceaccounts yzy

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

 kubectl describe serviceaccounts yzy

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

cat<<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
  name: yzy
  annotations:
    kubernetes.io/service-account.name: "yzy"
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

apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
  annotations:
    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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值