sealos官网 Installation | 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 -n
安装管理界面使用此种方法安装了几次,都是报2381端口被占用,也不知道是什么情况,于是放弃这种方式,换一种
使用以下命令可以查看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显示正常了
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失效,需要重新获取
K8S有两种用户:User 和 Service Account,User 给人用,Service Account 给进程用,让进程有相关权限,Dashboard 是一个进程,我们就可以创建一个Service Account 给它。
上面的token无效后,找了很多资料,后来发现:
kubernetes v1.24.0 更新之后进行创建 ServiceAccount 不会自动生成 Secret 需要对其手动创建
cat<
kubectl get serviceaccounts yzy
kubectl describe serviceaccounts yzy
cat<
kubectl describe serviceaccounts yzy
6、查看 Secret 详细详细,复制token输入登录页面
kubectl describe secrets yzy
复制token,输入浏览器的token,后登录
到此安装完毕
--------------------------------问题又来了
控制台什么都不让看,消息提示说是被禁止访问了,这个账户权限不够
试了一些方法但最终还是没有解决,所以我还了一个版本试试
-------------------------------
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
kubectl get svc,pods -n kubernetes-dashboard
由于我之前安装过另一个版本,所以出现了两组,running的是之前的,ContainerCreateing的是刚刚的
又过了一会再次执行,发现剩下三个了
在等一会在执行,发现已经正常了
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
kubectl describe serviceaccount admin-user -n kubernetes-dashboard
kubectl describe secrets admin-user -n kubernetes-dashboard
将此token值复制到浏览器中再次输入发现一切正常
到此大功告成
如果token失效了,则可以使用命令在创建一个
kubectl describe secrets admin-user -n kubernetes-dashboard
可以在控制台把tokne的失效时间延长,我这里设置的是30天(2592000s)
每次登录dashboard控制台,需要先执行 kubectl port-forward -n kubernetes-dashboard svc/kubernetes-dashboard 8443:443 --address 0.0.0.0 将端口映射出来,太麻烦了,直接编辑下将端口映射好
kubectl edit service kubernetes-dashboard --namespace=kubernetes-dashboard
然后查看服务端口:
kubectl get service -A