머리말
내 설치의 단계별 프로세스를 기록합니다 sealos
. 기본적으로 전체 네트워크에 유사한 신뢰할 수 있는 정보가 없습니다. 너무 작기 때문일 수 있습니다. 이 기사를 검색하는 사람들에게 도움이 되었으면 합니다.
씰로스가 뭐야
Sealos는 쿠버네티스를 코어로 하는 클라우드 운영 체제 배포판으로 독립형 운영 체제는 Linux 배포판과 같으며 PPT, Word, Excel 등 다양한 독립형 응용 프로그램을 설치하여 사용할 수 있습니다. 클라우드 운영 체제는 이러한 독립 실행형 응용 프로그램을 데이터베이스, 개체 저장소, 메시지 대기열 등과 같은 다양한 클라우드 응용 프로그램으로 교체하기만 하면 되며 이해하기 쉽고 이러한 응용 프로그램은 분산되고 가용성이 높습니다. Sealos는 다양한 분산 응용 프로그램을 지원하고 실행할 수 있는 클라우드 운영 체제입니다. Sealos를 사용하면 클라우드가 있습니다. 주요 정보는 여기 소개를 참조하십시오 | sealos는 여기에서 자세히 설명하지 않습니다.
재료
- 소개 |
- labring/sealos: Sealos는 클라우드 네이티브 애플리케이션을 관리하도록 설계된 범용 클라우드 운영 체제인 Kubernetes 배포판입니다. 데모: https://cloud.sealos.io(github.com)
- sealerio/sealer: 쿠버네티스 클러스터 및 분산 애플리케이션 구축, 공유 및 실행(CNCF 프로젝트) --- sealerio/sealer: 쿠버네티스 클러스터 및 분산 애플리케이션 구축, 공유 및 실행(CNCF 프로젝트) (github .com)
- 사용된 기본 이미지는 여기에서 찾을 수 있습니다: labring's Profile | Docker Hub
- 버전 4.17 설치 github.com/labring/sea…
- crictl 명령 github.com/kubernetes-… 를 설치합니다.
- 명령 참조 Kubernetes 수명 주기 관리 | sealos
건축학
- 데이터 자체에 그림이 없거나 코드에서 추출한 것
- 코드 읽기, 디자인 패턴 및 코드 아키텍처 이해, 기본 작업 및 구현 이해
설치하다
공식 운영
4.0版本的sealos
# 安装前必读
1.目前只支持root用户,不支持非root和sudo
2.目前只支持在集群内的节点执行安装命令
3.提前卸载掉已安装的docker
4.3.0版本的k8s离线包无法使用4.0版本的sealos安装
5.run命令时如果密码有特殊字符,请加英文单引号
6.离线安装示例:
4.0离线安装示例:
---
# 镜像打包, 在有外网的机器上执行
sealos pull labring/kubernetes:v1.24.0
sealos pull labring/calico:v3.22.1
sealos save -o kubernetes.tar labring/kubernetes:v1.24.0
sealos save -o calico.tar labring/calico:v3.22.1
---
# 加载镜像, 内网机器执行
sealos load -i kubernetes.tar
sealos load -i calico.tar
复制代码
주인
주인 | 사용 |
---|---|
10.55.10.107 | sealos의 인스톨러와 마스터 노드가 될 예정입니다. |
10.55.10.106 | 노드 노드 1 |
10.55.10.97 | 노드 노드 2 |
문제를 찾는 데 편리한 암호 없이 열도록 선택할 수 있습니다.
ssh-keygen -t rsa
cat id_rsa.pub >> authorized_keys
vim authorized_keys # 添加秘钥
vim /etc/ssh/sshd_config # 修改允许root登录 PermitRootLogin yes
systemctl restart sshd
复制代码
사전 확인 및 문서 준비
# 主机只有挂载的/data01磁盘支持overlay,所以注定了没法向上面官方文档给出的那么简单的就能安装完成
[root@test-d-010055010107 data01]# xfs_info /data01
meta-data=/dev/vdb isize=512 agcount=4, agsize=5242880 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=20971520, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=10240, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
# 文件准备,从远处pull下来,然后save成镜像包
ctr image import kubernetes.tar
ctr image import calico.tar
ctr images export calico.tar docker.io/labring/calico:v3.22.1
wget https://github.com/labring/sealos/releases/download/v4.1.4/sealos_4.1.4_linux_amd64.tar.gz \
&& tar zxvf sealos_4.1.4_linux_amd64.tar.gz sealos && chmod +x sealos && mv sealos /usr/bin
# sealos_4.1.4 和 sealos_4.1.7 在Global Flags地方有区别,并且4.1.4有bug无法完成当前主机集群的正常部署,需要使用4.1.7版本
复制代码
독립형 설치
# 遇到文件格式问题,需要指定主目录
[root@test-d-010055010107 data01]# ./sealos run
Error: kernel does not support overlay fs: overlay: the backing xfs filesystem is formatted without d_type support, which leads to incorrect behavior. Reformat the filesystem with ftype=1 to enable d_type support. Running without d_type is not supported.: driver not supported
kernel does not support overlay fs: overlay: the backing xfs filesystem is formatted without d_type support, which leads to incorrect behavior. Reformat the filesystem with ftype=1 to enable d_type support. Running without d_type is not supported.: driver not supported
# 加载镜像包有问题,需要指定镜像解包格式
[root@test-d-010055010107 data01]# sealos --root /data01/ --runroot /data01/ load -i kubernetes.tar
Error: loading index: open /var/tmp/oci1097864579/index.json: no such file or directory
loading index: open /var/tmp/oci1097864579/index.json: no such file or directory
# 常用命令
mkdir /data01/sealos
sealos --debug --root /data01/sealos --runroot /data01/sealos/docker load -i calico.tar -t docker-archive
sealos --debug --root /data01/sealos --runroot /data01/sealos/docker load -i new-kubernetes.tar -t oci-archive
sealos load --help
sealos --debug --root /data01/sealos --runroot /data01/sealos/docker run localhost/labring/kuberentes:v1.24 --single # 通过镜像名有问题,这里直接用镜像id
sealos --debug --root /data01/sealos --runroot /data01/sealos/docker run 133c6a0a0d5f --single
# 重置安装
sealos --debug --root /data01/sealos --runroot /data01/sealos/docker reset
# 简化命令
alias s="sealos --debug --root /data01/sealos --runroot /data01/sealos/docker "
s run 133c6a0a0d5f --single
[root@test-d-010055010107 sealos]# s images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/labring/kubernetes v1.24 133c6a0a0d5f 10 days ago 635 MB
docker.io/labring/helm v3.8.2 1123e8b4b455 7 months ago 45.1 MB
docker.io/labring/calico v3.22.1 29516dc98b4b 9 months ago 546 MB
# sealos version must >= v4.1.0
s reset
s run 133c6a0a0d5f 1123e8b4b455 29516dc98b4b --single
# 手动执行image-cri-shim启动,还是有问题,查看有报错
/usr/bin/image-cri-shim -f /etc/image-cri-shim.yaml
fatal failed to setup image_shim, cri/shim: failed to register image service: falling using CRI v1 image API, please using other cri support v1 CRI API
fatal failed to setup image_shim, cri/shim: failed to register image service: falling using CRI v1alpha2 image API, please using other cri support v1alpha2 CRI API
# 排查containerd,看到有报错信息
[root@test-d-010055010107 sealos]# systemctl status containerd -l
● containerd.service - containerd container runtime
Loaded: loaded (/etc/systemd/system/containerd.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2023-03-27 17:49:48 CST; 16h ago
Docs: https://containerd.io
Main PID: 7077 (containerd)
Memory: 13.9M
CGroup: /system.slice/containerd.service
└─7077 /usr/bin/containerd
Mar 27 17:49:48 test-d-010055010107 systemd[1]: Starting containerd container runtime...
Mar 27 17:49:48 test-d-010055010107 containerd[7077]: time="2023-03-27T17:49:48.229104592+08:00" level=warning msg="failed to load plugin io.containerd.snapshotter.v1.overlayfs" error="/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs does not support d_type. If the backing filesystem is xfs, please reformat with ftype=1 to enable d_type support"
Mar 27 17:49:48 test-d-010055010107 containerd[7077]: time="2023-03-27T17:49:48.229191393+08:00" level=warning msg="failed to load plugin io.containerd.snapshotter.v1.devmapper" error="devmapper not configured"
Mar 27 17:49:48 test-d-010055010107 containerd[7077]: time="2023-03-27T17:49:48.229403283+08:00" level=warning msg="could not use snapshotter overlayfs in metadata plugin" error="/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs does not support d_type. If the backing filesystem is xfs, please reformat with ftype=1 to enable d_type support"
Mar 27 17:49:48 test-d-010055010107 containerd[7077]: time="2023-03-27T17:49:48.229420619+08:00" level=warning msg="could not use snapshotter devmapper in metadata plugin" error="devmapper not configured"
Mar 27 17:49:48 test-d-010055010107 containerd[7077]: time="2023-03-27T17:49:48.238313538+08:00" level=warning msg="failed to load plugin io.containerd.grpc.v1.cri" error="failed to create CRI service: failed to find snapshotter \"overlayfs\""
Mar 27 17:49:48 test-d-010055010107 systemd[1]: Started containerd container runtime.
# 怀疑是 containerd 没有安装成功,尝试安装crictl命令来看看
tar zxvf crictl-v1.25.0-linux-amd6.tar.gz -C /usr/local/bin
# 查看信息,确定是这个问题,尝试修复
[root@test-d-010055010107 sealos]# crictl info
E0328 10:07:11.802780 10291 remote_runtime.go:948] "Status from runtime service failed" err="rpc error: code = Unimplemented desc = unknown service runtime.v1alpha2.RuntimeService"
FATA[0000] getting status of runtime: rpc error: code = Unimplemented desc = unknown service runtime.v1alpha2.RuntimeService
# 查看containerd关于overlayfs的配置,以及修改目录
cp -r /var/lib/container* /data01/
vim /etc/containerd/config.toml 修改 root = "/data01/containerd"
# 顺利启动containerd和image-cri-shim
systemctl restart containerd
systemctl restart image-cri-shim
# 遇到了 /root/.sealos/default/etc/admin.conf 找不到的问题,看着issue需要升级到4.1.7版本,问题解决但又然后发现重复安装有问题,无法继续上次安装
s reset # 重新开始
# 但是安装出来的containerd还是在/var/lib/containerd,需要找到改变此路径的方法,翻阅文档猜测指定criData环境变量可能有用
# 改变命令
s run 133c6a0a0d5f --single --env criData=/data01/containerd
# 的确有用,会把containerd安装到/data01/containerd,但是/root/.sealos/default/Clusterfile中显示的criData还是/var/lib/containerd
# 成功安装
# 但是节点一直未就绪
[root@test-d-010055010107 sealos]# kubectl get node
NAME STATUS ROLES AGE VERSION
test-d-010055010107 NotReady control-plane 8m56s v1.24.0
KubeletNotReady container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized
[root@test-d-010055010107 sealos]# crictl ps -a
CONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID POD
5d3572591a876 77b49675beae1 12 minutes ago Running kube-proxy 0 dc61529f47415 kube-proxy-vjjqv
9559b3a7d80ec aebe758cef4cd 12 minutes ago Running etcd 0 1a1846fb97f25 etcd-test-d-010055010107
00a5f23d7d227 529072250ccc6 12 minutes ago Running kube-apiserver 0 b65e60cdc8996 kube-apiserver-test-d-010055010107
91b737d89b72e e3ed7dee73e93 12 minutes ago Running kube-scheduler 0 e682c3fb7cc11 kube-scheduler-test-d-010055010107
dd3a2ea10b7c7 88784fb4ac2f6 12 minutes ago Running kube-controller-manager 0 d3177bd65479c kube-controller-manager-test-d-010055010107
[root@test-d-010055010107 sealos]# kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-6d4b75cb6d-qfnf5 0/1 Pending 0 3h24m
kube-system coredns-6d4b75cb6d-xzjz5 0/1 Pending 0 3h24m
kube-system etcd-test-d-010055010107 1/1 Running 0 3h24m
kube-system kube-apiserver-test-d-010055010107 1/1 Running 0 3h24m
kube-system kube-controller-manager-test-d-010055010107 1/1 Running 0 3h24m
kube-system kube-proxy-vjjqv 1/1 Running 0 3h24m
kube-system kube-scheduler-test-d-010055010107 1/1 Running 0 3h24m
[root@test-d-010055010107 sealos]# journalctl -xeu kubelet
Mar 28 11:43:40 test-d-010055010107 kubelet[20385]: E0328 11:43:40.678552 20385 kubelet.go:2344] "Container runtime network not ready" networkReady="NetworkReady=f
Mar 28 11:43:45 test-d-010055010107 kubelet[20385]: E0328 11:43:45.679314 20385 kubelet.go:2344] "Container runtime network not ready" networkReady="NetworkReady=f
# 看issue上是说没有安装calico导致的,重新安装
s reset # 并不会删除/root/.sealos
s run 133c6a0a0d5f 1123e8b4b455 29516dc98b4b --single --env criData=/data01/containerd
# 看着一切正常
[root@test-d-010055010107 sealos]# kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
calico-system calico-kube-controllers-6b44b54755-qsmkl 0/1 Pending 0 115s
calico-system calico-node-7grz7 1/1 Running 0 115s
calico-system calico-typha-6f9598cfd9-2sr27 1/1 Running 0 115s
kube-system coredns-6d4b75cb6d-6fncr 1/1 Running 0 2m2s
kube-system coredns-6d4b75cb6d-b8czk 1/1 Running 0 2m2s
kube-system etcd-test-d-010055010107 1/1 Running 1 2m16s
kube-system kube-apiserver-test-d-010055010107 1/1 Running 1 2m18s
kube-system kube-controller-manager-test-d-010055010107 1/1 Running 1 2m16s
kube-system kube-proxy-wnp2g 1/1 Running 0 2m3s
kube-system kube-scheduler-test-d-010055010107 1/1 Running 1 2m16s
tigera-operator tigera-operator-d7957f5cc-5wfc4 1/1 Running 0 2m2s
[root@test-d-010055010107 sealos]#
[root@test-d-010055010107 sealos]#
[root@test-d-010055010107 sealos]# kubectl get node
NAME STATUS ROLES AGE VERSION
test-d-010055010107 Ready control-plane 2m25s v1.24.0
复制代码
클러스터 설치
독립형 설치 경험으로 밟아야 할 피트를 모두 밟고 바로 클러스터 설치 시작
# 尝试集群安装
alias s="sealos --debug --root /data01/sealos --runroot /data01/sealos/docker "
s run 133c6a0a0d5f 1123e8b4b455 29516dc98b4b -e defaultVIP=10.55.10.108 -e criData=/data01/containerd --masters 10.55.10.107 --nodes 10.55.10.97,10.55.10.106 --passwd 112233
passwd 112233
[root@test-d-010055010107 ~]# kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
test-d-010055010097 Ready <none> 65s v1.24.0 10.55.10.97 <none> CentOS Linux 7 (Core) 3.10.0-693.11.6.el7.x86_64 containerd://1.7.0
test-d-010055010106 Ready <none> 76s v1.24.0 10.55.10.106 <none> CentOS Linux 7 (Core) 3.10.0-693.11.6.el7.x86_64 containerd://1.7.0
test-d-010055010107 Ready control-plane 95s v1.24.0 10.55.10.107 <none> CentOS Linux 7 (Core) 3.10.0-693.11.6.el7.x86_64 containerd://1.7.0
# 看着没啥问题
复制代码
문제 해결에 사용되는 참조 링크
- 지원되지 않는 그래프 드라이버: vfs · Issue #1576 · sealerio/sealer(github.com)
- 개요 | Sealer는 일부 문제에 대해 이 문서를 참조할 수도 있습니다.
- 질문: image.tar를
sealos load -i
사용할 수 있습니까docker save -o
? · Issue #2526 · labring/sealos --- 질문: image.tar를sealos可以加载-i
사용할 수 있습니까docker保存-o
? Issue #2526 labring/sealos (github.com) - Crictl 설치 - Xiaojimao - 블로그 가든(cnblogs.com)
- (22 메시지) Containerd 설치 프로세스 및 함정_/var/lib/containerd_Aisaka81's Blog-CSDN Blog
- error 클러스터에 적용 오류: 게스트에서 admin.conf 읽기 오류: /root/.sealos/default/etc/admin.conf 열기: 해당 파일 또는 디렉터리 없음 · 문제 #2548 · labring/sealos (github.com)
- sealos4.0 최초 설치 실패, 재설치 후 재설치 후 재설치 실패 및 설치 실패 · 이슈 #1207 · labring/sealos (github.com)
- 단일 머신이 설치된 경우 API 서버가 시작되지 않고 kubelet을 시작할 수 없습니다. Issue #2313 labring/sealos (github.com)
- 버그: 단일 노드 배포 노드가 준비되지 않음 · Issue #1663 · labring/sealos (github.com)
- sealos NetworkReady=거짓 이유:NetworkPluginNotReady 메시지:네트워크 플러그인이 오류 반환: cni 플러그인이 초기화되지 않음 · 문제 #704 · labring/sealos (github.com)
- linux journalctl 명령 - sparkdev - Blog Garden(cnblogs.com) Linux 시스템 보기 로그 명령
감정
- 버전 변경이 많고 명령 매개 변수가 변경되었으며 버그가 깊숙이 숨겨져 있습니다.
- 발생한 문제를 해결하려면 인내심을 가져야 합니다. 다음과 같이 k8s 포지셔닝 문제가 의존하는 몇 가지 명령을 미리 설치할 수 있습니다.
ctr/crictl
- 공식 딩톡 그룹에도 가입했지만 기본적으로 질문 및 문의에 답변하지 않습니다.
- 문제에 주의를 기울이십시오. 유일한 귀중한 참고 자료이기도 합니다.
- 바다표범이 구덩이를 밟는 기록 전재 금지 - Nuggets(juejin.cn)