sealer 自定义 k8s 镜像并部署高可用集群

sealer 可以自定义 k8s 镜像,想把一些 dashboard 或者 helm 包管理器打入 k8s 镜像,可以直用 sealer 来自定义。

sealer 部署的 k8s 高可用集群自带负载均衡。sealer 的集群高可用使用了轻量级的负载均衡 lvscare。相比其它负载均衡,lvscare 非常小仅有几百行代码,而且 lvscare 只做 ipvs 规则的守护,本身不做负载非常稳定,直接在 node 上监听 apiserver,如果跪了就移除对应的规则,重新起来之后会自动加回,相当于是一个专用的负载均衡器。

部署方式和 sealor 一样指定 master 节点和 node 节点。

1、下载并部署 sealer

Download and install sealer. Sealer is a binary tool of golang. You can download and unzip it directly to the bin directory, and the release page can also be downloaded
wget -c https://sealer.oss-cn-beijing.aliyuncs.com/sealer-latest.tar.gz && \
    tar -xvf sealer-latest.tar.gz -C /usr/bin

2、创建 kubefile 文件并编辑 (自定义构建 k8s 镜像需要会 dockerfile 的镜像命令)

touch kubefile

FROM registry.cn-qingdao.aliyuncs.com/sealer-io/kubernetes:v1.22.5  # k8s 版本自定义
COPY helm /usr/bin                                                  # 这个 helm 已经解压并把 helm 移动到 /root/ 目录下了
COPY kube-prometheus-0.11.0 .                                       # 这个版本可能不一样,解压出来的文件夹名字也不一样
COPY loki-stack-2.1.2.tgz .                                         # loki 这个可以用 helm 下载安装包
CMD kubectl apply -f kube-prometheus-0.11.0/manifests/setup
CMD kubectl apply -f kube-prometheus-0.11.0/manifests
CMD helm install loki loki-stack-2.1.2.tgz -n monitoring

3、构建

sealer build -t k8s:v1.22.5 .   # 构建镜像名字可以根据自己情况定义
2022-06-29 23:02:41 [INFO] [executor.go:123] start to check the middleware file
2022-06-29 23:02:41 [INFO] [executor.go:63] run build layer: COPY helm /usr/bin
2022-06-29 23:02:42 [INFO] [executor.go:63] run build layer: COPY kube-prometheus-0.11.0 .
2022-06-29 23:02:42 [INFO] [executor.go:63] run build layer: COPY loki-stack-2.1.2.tgz .
2022-06-29 23:02:42 [INFO] [executor.go:95] exec all build instructs success
2022-06-29 23:02:42 [WARN] [executor.go:112] no rootfs diff content found
2022-06-29 23:02:42 [INFO] [build.go:100] build image amd64 k8s:v1.22.5 success

4、查看镜像并部署

[root@master3 ~]# sealer images 
+---------------------------+------------------------------------------------------------------+-------+---------+---------------------+-----------+
|        IMAGE NAME         |                             IMAGE ID                             | ARCH  | VARIANT |       CREATE        |   SIZE    |
+---------------------------+------------------------------------------------------------------+-------+---------+---------------------+-----------+
| k8s:v1.22.5               | ef293898df6f5a9a01bd5bc5708820ef9ff25acfe56ea20cfe3a45a725f59bb5 | amd64 |         | 2022-06-29 23:02:42 | 1004.76MB |
| kubernetes:v1.22.5        | 46f8c423be130a508116f41cda013502094804525c1274bc84296b674fe17618 | amd64 |         | 2022-06-29 23:02:42 | 956.60MB  |
+---------------------------+------------------------------------------------------------------+-------+---------+---------------------+-----------+


sealer run k8s:v1.22.5 --masters 192.168.200.3,192.168.200.4,192.168.200.5 \
    --nodes 192.168.200.6 \
    --user root \
    --passwd admin

5、查看节点状态

[root@master3 ~]# kubectl get nodes
NAME      STATUS   ROLES    AGE   VERSION
master3   Ready    master   40h   v1.22.5
master4   Ready    master   40h   v1.22.5
master5   Ready    master   40h   v1.22.5
node6     Ready    <none>   40h   v1.22.5

查看所有 pod 状态

[root@master3 ~]# kubectl get po --all-namespaces -o wide 
NAMESPACE          NAME                                       READY   STATUS    RESTARTS   AGE   IP               NODE      NOMINATED NODE   READINESS GATES
calico-apiserver   calico-apiserver-57447598b7-46kbs          1/1     Running   5          40h   100.84.137.67    master5   <none>           <none>
calico-apiserver   calico-apiserver-57447598b7-hlws5          1/1     Running   2          40h   100.68.136.4     master3   <none>           <none>
calico-system      calico-kube-controllers-69dfd59986-tb496   1/1     Running   6          40h   100.125.38.209   node6     <none>           <none>
calico-system      calico-node-69dld                          1/1     Running   1          40h   192.168.200.6    node6     <none>           <none>
calico-system      calico-node-kdjzs                          1/1     Running   4          40h   192.168.200.3    master3   <none>           <none>
calico-system      calico-node-prktp                          1/1     Running   1          40h   192.168.200.5    master5   <none>           <none>
calico-system      calico-node-tm285                          1/1     Running   3          40h   192.168.200.4    master4   <none>           <none>
calico-system      calico-typha-779b5cfd4c-x4wnz              1/1     Running   2          40h   192.168.200.4    master4   <none>           <none>
calico-system      calico-typha-779b5cfd4c-zftxs              1/1     Running   1          40h   192.168.200.6    node6     <none>           <none>
kube-system        coredns-55bcc669d7-pvj45                   1/1     Running   2          40h   100.68.136.3     master3   <none>           <none>
kube-system        coredns-55bcc669d7-xkwvm                   1/1     Running   1          40h   100.84.137.68    master5   <none>           <none>
kube-system        etcd-master3                               1/1     Running   2          40h   192.168.200.3    master3   <none>           <none>
kube-system        etcd-master4                               1/1     Running   2          40h   192.168.200.4    master4   <none>           <none>
kube-system        etcd-master5                               1/1     Running   2          40h   192.168.200.5    master5   <none>           <none>
kube-system        kube-apiserver-master3                     1/1     Running   3          40h   192.168.200.3    master3   <none>           <none>
kube-system        kube-apiserver-master4                     1/1     Running   2          40h   192.168.200.4    master4   <none>           <none>
kube-system        kube-apiserver-master5                     1/1     Running   3          40h   192.168.200.5    master5   <none>           <none>
kube-system        kube-controller-manager-master3            1/1     Running   3          40h   192.168.200.3    master3   <none>           <none>
kube-system        kube-controller-manager-master4            1/1     Running   9          40h   192.168.200.4    master4   <none>           <none>
kube-system        kube-controller-manager-master5            1/1     Running   8          40h   192.168.200.5    master5   <none>           <none>
kube-system        kube-lvscare-node6                         1/1     Running   1          40h   192.168.200.6    node6     <none>           <none>
kube-system        kube-proxy-99cjb                           1/1     Running   1          40h   192.168.200.3    master3   <none>           <none>
kube-system        kube-proxy-lmdn6                           1/1     Running   1          40h   192.168.200.4    master4   <none>           <none>
kube-system        kube-proxy-ns9c5                           1/1     Running   1          40h   192.168.200.5    master5   <none>           <none>
kube-system        kube-proxy-xf6fx                           1/1     Running   1          40h   192.168.200.6    node6     <none>           <none>
kube-system        kube-scheduler-master3                     1/1     Running   4          40h   192.168.200.3    master3   <none>           <none>
kube-system        kube-scheduler-master4                     1/1     Running   5          40h   192.168.200.4    master4   <none>           <none>
kube-system        kube-scheduler-master5                     1/1     Running   7          40h   192.168.200.5    master5   <none>           <none>
monitoring         alertmanager-main-0                        2/2     Running   2          40h   100.125.38.210   node6     <none>           <none>
monitoring         alertmanager-main-1                        0/2     Pending   0          40h   <none>           <none>    <none>           <none>
monitoring         alertmanager-main-2                        0/2     Pending   0          40h   <none>           <none>    <none>           <none>
monitoring         blackbox-exporter-5c545d55d6-c8997         3/3     Running   3          40h   100.125.38.203   node6     <none>           <none>
monitoring         grafana-785db9984-xhrwx                    1/1     Running   1          40h   100.125.38.204   node6     <none>           <none>
monitoring         kube-state-metrics-54bd6b479c-jvt76        3/3     Running   3          40h   100.125.38.202   node6     <none>           <none>
monitoring         node-exporter-5hl54                        2/2     Running   2          40h   192.168.200.4    master4   <none>           <none>
monitoring         node-exporter-89jbp                        2/2     Running   2          40h   192.168.200.3    master3   <none>           <none>
monitoring         node-exporter-mqm4n                        2/2     Running   2          40h   192.168.200.6    node6     <none>           <none>
monitoring         node-exporter-mx6qr                        2/2     Running   2          40h   192.168.200.5    master5   <none>           <none>
monitoring         prometheus-adapter-7dbf69cc-65hp9          1/1     Running   1          40h   100.125.38.205   node6     <none>           <none>
monitoring         prometheus-adapter-7dbf69cc-xnjv4          1/1     Running   1          40h   100.125.38.207   node6     <none>           <none>
monitoring         prometheus-k8s-0                           2/2     Running   2          40h   100.125.38.208   node6     <none>           <none>
monitoring         prometheus-k8s-1                           0/2     Pending   0          40h   <none>           <none>    <none>           <none>
monitoring         prometheus-operator-54dd69bbf6-h5szm       2/2     Running   2          40h   100.125.38.206   node6     <none>           <none>
tigera-operator    tigera-operator-7cdb76dd8b-hfhrt           1/1     Running   9          40h   192.168.200.6    node6     <none>           <none>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sealer是一种工具,用于在KubernetesK8s集群中进行自动化部署和管理。它可以帮助用户简化K8s部署的过程,提供了一种快速、可靠的方式来安装和配置K8s集群。 首先,我们需要准备好运行K8s集群的机器。这些机器可以是物理服务器、虚拟机或云服务器。安装K8s所需的系统要求通常包括运行最新版本的Linux操作系统(如Ubuntu、CentOS等),具备足够的计算和存储资源,并且能够访问互联网。 接下来,我们可以下载和安装sealer工具。sealer是一个开源项目,可以在GitHub上找到它的源代码。我们可以将其克隆到本地,并按照官方文档提供的指南进行编译和安装。一旦安装完成,我们可以使用sealer提供的命令行界面来操作K8s集群。 在安装K8s之前,我们需要配置sealer的一些参数。这些参数包括K8s集群的节点数量、每个节点的IP地址、K8s版本、网络插件等。我们可以通过修改sealer的配置文件来进行这些配置,并确保每个参数都正确设置。 安装K8s之前,我们还需要安装Docker,因为Kubernetes依赖于Docker来运行容器。我们可以使用sealer提供的命令来安装和配置Docker,以确保它与Kubernetes兼容。 安装Kubernetes时,sealer会自动下载并配置所需的组件,如kube-apiserver、kube-controller-manager、kube-scheduler等。它还会为每个节点生成所需的证书和密钥,并将其配置到相应的文件中。 一旦安装完成,我们可以使用sealer提供的命令来验证K8s集群的状态,如查看节点、Pods等。我们还可以使用sealer来添加、删除和更新集群中的节点,以满足我们的需求。 总的来说,sealer是一个功能强大的工具,可以帮助我们简化Kubernetes的安装和管理。通过正确配置sealer并按照指南进行操作,我们可以轻松地搭建和维护一个高可用、可靠的Kubernetes集群

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值