SuSE CaaS4.5 容错环境搭建v1

1. 环境概述

    3 Master Node + 2 Worker Node + 1Management Note + 1 Mirror Node + 1 RMT/SMT

    Management Note:

        用于管理CaaS平台,并附加部署负载均衡服务器

    Mirror Servers:

        包含Helm Chart Repositories、Container Registry

        Container Registries提供内网环境离线下载镜像

    RMT/SMT:

        提供系统升级软件包及CaaS搭建软件包

Network

2. 必要条件

k8s环境相关服务器/虚机CPU最小需要:2(v)CPU;

服务器命名要求符合:完全限定域名(FQDN);

禁用ipv6;

启用ip转发功能(net.ipv4.ip_forward = 1);

在集群平台引导之前,必须禁用swap;

时钟同步(NTP);

集群平台配置有效网关;

3. 准备步骤

3.1 hosts编辑

# vim /etc/hosts

/etc/hosts

3.2 内核参数

# vim /etc/sysctl.conf

/etc/sysctl.conf

3.3 关闭swap

# touch/etc/init.d/after.local

# chmod 744/etc/init.d/after.local

# vim/etc/init.d/after.local

swap

3.4 时钟同步设置

# sed -i '3i pool 192.168.55.131 iburst' /etc/chrony.conf

# systemctl enable chronyd.service

# systemctl restart chronyd.service

# systemctl status chronyd.service

3.5 网关设置

    设置:3 Master Node + 2 Worker Node + 1Management Note 

# echo "default192.168.55.1 - -" >> /etc/sysconfig/network/routes

# rcnetwork restart

3.6 软件库添加


zypper repo

3.7 更新系统补丁

# zypper dup

3.8 重启系统

# reboot

4. Mirror服务器配置

4.1 软件包安装

# zypper in docker helm-mirror skopeo

# systemctl enable --now docker.service   //启动服务并配置自启动

4.2 从SUSE提取Registry container image

# docker pull registry.suse.com/sles12/registry:2.6.2

镜像打包/导入步骤

# docker save -o /tmp/registry.tar registry.suse.com/sles12/registry:2.6.2

# docker load -i /tmp/registry.tar

4.3 Registry Container配置文件

# mkdir /etc/docker/registry/

# vim /etc/docker/registry/config.yml

config.yml

4.4 启动Registry Container

# docker run -d -p5000:5000 --restart=always --name registry \

 -v/etc/docker/registry:/etc/docker/registry:ro \

 -v /var/lib/registry:/var/lib/registryregistry.suse.com/sles12/registry:2.6.2

# docker ps -a


# docker stats <Container ID>

# docker start <Container ID>

# docker stop <Container ID>

4.5 配置Nginx webserver

# zypper install nginx

# vim /etc/nginx/vhosts.d/charts-server-http.conf

charts-server-http.conf

# systemctl enable--now nginx.service

4.6 更新CaaS平台构建镜像到Registry Mirror

https://documentation.suse.com/external-tree/en-us/suse-caasp/4/skuba-cluster-images.txt

或许在安装skuba软件包的服务器上执行:

# skuba cluster images

images

# mkdir /tmp/skuba-cluster-images

# vim /tmp/skuba-cluster-images/sync.yaml

skuba-cluster-images

# cd /tmp/skuba-cluster-images

# skopeo sync --src yaml --dest sync.yaml /tmp/skuba-cluster-images/ --scoped

# skopeo sync --dest-tls-verify=false --src dir --dest docker /tmp/skuba-cluster-images/ mirror.demo.com:5000 --scoped

4.7 Helm Charts数据获取及发布

4.7.1 从存储库下载所有charts到本地

# mkdir /tmp/charts

# cd /tmp/charts

# helm-mirror --new-root-url http://charts.demo.com/charts https://kubernetes-charts.suse.com /tmp/charts

/tmp/charts/

4.7.2 转换charts信息为skopeo格式

# helm-mirror inspect-images /tmp/charts/ -o skopeo=sync.yaml -i

调整转换后的文件:

删除重复版本信息及镜像信息

例如:

charts
sync1.yaml
sync2.yaml

注意:

    gcr.io 地址中的镜像需要翻墙

    在CaaS4.5中默认安装的是helm2,本文档会使用helm3替换helm2,所以不再需要tiller。相关镜像也不再需要下载。

4.7.3 下载charts库数据并发布到Registry Mirror

# mkdir /tmp/skopeodata

# skopeo sync --src yaml --dest dir sync.yaml /tmp/skopeodata/ --scoped

# skopeo sync --dest-tls-verify=false --src dir --dest docker /tmp/skopeodata/ mirror.demo.com:5000 --scoped

查看本地Registry 镜像内容

# curl mirror.demo.com:5000/v2/_catalog | tr "," "\n"

4.7.4 Helm chart数据拷贝到web家目录

# cp -a /tmp/charts/ /srv/www/charts/

# chown -R nginx:nginx /srv/www/charts

# chmod -R 555 /srv/www/charts

# systemctl restart nginx.service

5. Nginx负载均衡

    配置在management节点

5.1 nginx配置

#zypper -n in nginx

#vim /etc/nginx/nginx.conf

nginx.conf-1
nginx.conf-2

# systemctl enable --now nginx

# systemctl status nginx

5.2 校验负载均衡功能

    在部署CaaS后进行校验

management:~#cd /root/CaaS-Cluster

management:~#while true; do skuba cluster status; sleep 1; done;

management:~ # tail -100f /var/log/nginx/k8s-masters-lb-access.log

log

6. ssh-agent配置

    配置在management节点

6.1 生成密钥对

management:~ # ssh-keygen

management:~ # cd ~/.ssh

management:~ # ssh-copy-id root@management.demo.com

management:~ # ssh-copy-id root@master01.demo.com

management:~ # ssh-copy-id root@master02.demo.com

management:~ # ssh-copy-id root@master03.demo.com

management:~ # ssh-copy-id root@worker01.demo.com

management:~ # ssh-copy-id root@worker02.demo.com

management:~ # ssh-copy-id root@worker03.demo.com

6.2 启动ssh-agent服务

management:~# eval"$(ssh-agent -s)"

6.3 添加私钥到ssh-agent

management:~# ssh-add~/.ssh/id_rsa

management:~# ssh-add -l

7. CaaS搭建

7.1 组件安装

    在所有management / master / worker 节点安装

    # zypper -n in -l -t pattern SUSE-CaaSP-Management

7.2 配置cri-o连接Registry Container

    在所有management / master / worker 节点安装

    # zypper -n install cri-o-1.18

    # mv /etc/containers/registries.conf /etc/containers/registries.conf.backup

    # vim /etc/containers/registries.conf

registries.conf

7.3 CaaS初始化

management:~ # cd ~/

management:~ # skuba cluster init --control-plane management.demo.com CaaS-Cluster

7.4 初始化添加首个master节点

management:~ # cd ~/CaaS-Cluster/

management:~ # skuba node bootstrap --target master01.demo.com master01 -v5

7.5 添加其他节点

语法:

skuba node join --role <master/worker> --user <user-name> --sudo --target <IP/FQDN> <node-name>

management:~ # skuba node join --role master --target master02.demo.com master02 -v5

management:~ # skuba node join --role master --target master03.demo.com master03 -v5

management:~ # skuba node join --role worker --target worker01.demo.com worker01 -v5

management:~ # skuba node join --role worker --target worker02.demo.com worker02 -v5

management:~ # skuba node join --role worker --target worker03.demo.com worker03 -v5

7.6 测试集群

management:~ # mkdir ~/.kube

management:~ # cp ~/CaaS-Cluster/admin.conf ~/.kube/config

management:~ # kubectl get nodes

display

management:~ # kubectl get nodes -o wide

nodes display

8. CaaS集群状态

8.1 当前节点下载的镜像

master01:~ # crictl images

master01-images

8.2 当前节点运行的容器

master01:~ # crictl ps -a

container

8.3 查看节点运行的Pods

master01:~ # crictl pods

pods display

8.4 查看容器日志

master01:~ # crictl logs d506b0fb5db13

container-logs

8.5 显示集群信息

management:~ # kubectl cluster-info

cluster-info

查看集群dump信息

management:~ # kubectl cluster-info dump | less

management:~ # kubectl version --short=true

cluster-version

8.6 显示资源信息

# kubectl --namespace=kube-systemget deployments -o wide

# kubectl get nodes-o wide

# kubectl get pods--all-namespaces -o wide

# kubectl get svc--all-namespaces

9. K8s stack

9.1 安装helm

# zypper in helm

从CassP 4.1.2版本开始,集群软件包含了helm,无需额外安装

9.2 替换helm2到helm3

# zypper in helm3

# update-alternatives --set helm /usr/bin/helm3

9.3 添加Mirror服务器的charts库

management:~ # helm repo add mirror-local http://charts.demo.com/charts

查看生成的库配置文件

management:~ # cat ~/.config/helm/repositories.yaml

repositories.yaml

查看charts库列表

# helm repo list

charts-repo

更新库数据

# helm repo update

charts-update

列出charts repo中的内容

# helm search repo

chart-date

附录A、常见chart库

● 微软chart仓库

http://mirror.azure.cn/kubernetes/charts/

● 阿里chart仓库

https://apphub.aliyuncs.com/

https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

官方网站:https://developer.aliyun.com/hub#/?_k=bfaiyc

● k8s官方chart仓库

https://hub.kubeapps.com/charts/incubator

● SUSE chart仓库

https://kubernetes-charts.suse.com

● 谷歌chart仓库

http://storage.googleapis.com/kubernetes-charts-incubator

附录B、重置CaaS搭建痕迹

swapoff -a

kubeadm reset

systemctl daemon-reload

systemctl unmask kubelet.service

systemctl restart kubelet

iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

附录C、node加入错误处理

master和worker节点在加入k8s成功后,若爆出异常错误,需要逐步重启master和worker节点即可。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352