GithubHelp home page GithubHelp logo

ben1234560 / k8s_paas Goto Github PK

View Code? Open in Web Editor NEW
4.6K 200.0 940.0 124.82 MB

如何基于K8s(Kubernetes)部署成PaaS/DevOps(一套完整的软件研发和部署平台)--教程/学习(实战代码/欢迎讨论/大量注释/操作配图),你将习得部署如:K8S(Kubernetes)、Dashboard、Harbor、Jenkins、本地Gitlab、Apollo框架、Promtheus、Grafana、Spinnaker等。

License: MIT License

Shell 100.00%
kubernetes paas ci cd cicd git jenkins spinnaker prometheus dubbo

k8s_paas's Introduction

k8s_PaaS

image image image image image image image image

image image image image

基于Kubernetes(K8S)一步步部署成PaaS/DevOps(一套完整的软件研发和部署平台)——教程/学习(实战代码/欢迎讨论/大量注释/操作配图),你将习得部署如:Kubernetes(K8S)、dashboard、Harbor、Jenkins、本地gitlab、Apollo框架、promtheus、grafana、spinnaker等。

注释及配图覆盖率达80%以上,旨在帮助快速入门。

并将告诉你:是什么(WHAT)、为什么这么做(WHY)、怎么做(HOW)。

建议学习时长1个月+,最终将实现点点点(自动化)的形式就能部署上线并维护。

PaaS架构图

K8S_PaaS架构图

橙色框内软件皆部署在K8S集群中,也就是我们可以随时扩容缩容

  • 对做的事情进行说明是什么(WHAT),为什么要做(WHY)。
  • 对相关文件进行解析、指明哪部机器操作、配图,并在易出错点添加解决办法。第二章由于配置内容较多,建议配合check_tool使用。
  • 使用文件皆是官方文件,相关软件包有对应文件,避免被更新或其它问题导致无法下载等情况,百度云https://pan.baidu.com/s/1arE2LdtAbcR80gmIQtIELw 提取码:ouy1。
  • 无数前人遍历/建设代码,为代码完整性保驾护航,欢迎给我们提供你的建议、扩展、报错。
  • 整理了多人问的4个问题Q&A:配置只有4核8G够吗,新手可以吗,找不到报错怎么办,做完看不懂怎么办
  • 推出公有云部署版本,如第二章——企业部署实战_K8S【公有云版】。自己电脑资源紧张的完全可以用,而且费用也便宜

学习章节:

资料参考:

深入剖析kubernetes也可以免费下载(在Docker章节最下面)

老男孩教育K8S容器云架构师1期

互助群

QQ群号:676040917(群未回的,请一定要提Issues或者发邮件给作者)

qq_group
群内禁止一切广告,只为解决问题而存在。

贡献者

欢迎参与贡献和完善内容,贡献方法参考CONTRIBUTING。感谢所有的贡献者,贡献列表见contributors

另外,感谢一直在群里提供建议和解答的伙伴们,感谢大家无私的开源精神👍👍👍

说明

本专题并不用于商业用途,转载请注明本专题地址,如有侵权,请务必邮件通知作者。

本人水平有限,文字代码难免有遗漏错误的地方,望不吝赐教,万分感谢。

Email:[email protected]

PS:看到点赞很开心,谢谢😊

k8s_paas's People

Contributors

aiisbetter avatar amazingandyyy avatar awadyoo avatar ben1234560 avatar blackcat308 avatar d00522 avatar haiya512 avatar mofish24h avatar nangongchengfeng avatar small-brilliant avatar sos111sos avatar wadestack avatar xzldb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

k8s_paas's Issues

建议添加一下时间同步

如果etcd服务器时间不同步的话,etcd组成集群有问题,执行./etcdctl cluster-health 总是报错,后来date一下,发现时间不一致,在执行之后就OK了

具体命令

timedatectl set-timezone Asia/Shanghai

timedatectl set-ntp true

第五章里的dubbo-monitor安装注意事项

1、dubbo-monitor 启动报 read-only file system的错,修改bin/start.sh,注释第一行"cp xxxxx",手动cp dubbo_origin.properties dubbo.properties,在进行镜像的构建
2、pod起不来的问题,修改bin/start.sh, 将nohup java $JAVA_OPTS那一行最后的重定向和后台运行符& 去掉 ,即去掉“2>&1 &”

第二章最后执行kubectl get pods为空无法打标签

按照步骤在安装部署运算节点服务(kubelet)中,执行kubectl get pods后没有看到有内容,也就无法正常打标签。
使用第二章的检查工具也没提示有任何问题。
即便是走完了全部流程,即走完了最后一步安装部署运算节点服务(kube-proxy),还是一样kubectl get pods无内容

除了10.4.7.11,其他虚机无法联网

按照doc,包括ip段设置一样,在配置11机器上配置 DNS,然后将其他机器的dns换成11,是都可以访问网络的 (当然这也符合预期)。
后来,我关机睡觉 ,第二天,出现 只有10.4.7.11机器能上网,其他机器,只要DNS1设置为10.4.7.11都不能上网,需要将dns1换成 10.4.7.254 才能上网 。
这个跟博主的doc 预期不一致,目前我也不清楚,不知道博主能否解答下 。

paas开放平台上的多租户怎么做呢?

如题,在寻找一个干净的paas平台架构,然后将一些nlp服务做成saas服务放进去,做个支持多租户的应用平台。也就是用户可以在平台上注册自己的应用然后得到独立的或者共享的nlp服务资源。

nginx 安装补充

yum install nginx nginx-mod-stream -y

安装nginx时,建议 安装上 nginx-mod-stream ,不然在添加
stream {
upstream kube-apiserver {
server 10.4.7.21:6443 max_fails=3 fail_timeout=30s;
server 10.4.7.22:6443 max_fails=3 fail_timeout=30s;
}
server {
listen 7443;
proxy_connect_timeout 2s;
proxy_timeout 900s;
proxy_pass kube-apiserver;
}
}
可能会报错,会显示没有这个stream模块。
感谢楼主分享

第二章里面etcd安装,最新版etcd3.5.4

最新版etcd3.5.4的参数配置改成如下,可run
#!/bin/sh
./etcd --name etcd-server-7-21
--data-dir /data/etcd/etcd-server
--listen-peer-urls https://10.4.7.21:2380
--listen-client-urls https://10.4.7.21:2379,http://127.0.0.1:2379
--quota-backend-bytes 8000000000
--initial-advertise-peer-urls https://10.4.7.21:2380
--advertise-client-urls https://10.4.7.21:2379,http://127.0.0.1:2379
--initial-cluster etcd-server-7-12=https://10.4.7.12:2380,etcd-server-7-21=https://10.4.7.21:2380,etcd-server-7-22=https://10.4.7.22:2380
--trusted-ca-file ./certs/ca.pem
--cert-file ./certs/etcd-peer.pem
--key-file ./certs/etcd-peer-key.pem
--client-cert-auth
--trusted-ca-file ./certs/ca.pem
--peer-cert-file ./certs/etcd-peer.pem
--peer-key-file ./certs/etcd-peer-key.pem
--peer-client-cert-auth
--peer-trusted-ca-file ./certs/ca.pem
--log-outputs stdout

纠错

第七章——Promtheus监控k8s企业家应用 应该是 第七章——Promtheus监控k8s企业级应用

推荐:使用k8e快速部署Kubernetes集群服务

作为YAML工程师,经常需要使用Kubernetes集群来验证很多技术化场景,如何快速搭建一套完整标准化的集群至关重要。罗列当前能快速部署Kubernetes 集群的工具有很多种,例如官方首当其冲有kubeadm工具,云原生社区有sealos作为一键部署的最佳方案,熟悉起来后部署都非常快。但是你是否考虑过并不是每一个YAML工程师都需要非常了解集群组件的搭配。这里,我给大家推荐的工具是基于单个文件的免配置的部署方式,对比kubeadm和sealos方案,去掉了对 Kubernetes 官方组件镜像的依赖,并且把Kubernetes相关的核心扩展推荐组件也都集成到这个二进制包中,通过软链接暴露,让环境依赖更少,这个安装工具就是k8e(可以叫 ‘kuber easy’ 或 K8易) 。k8e是基于当前主流上游Kubernetes发行版 k3s做的优化封装和裁剪。去掉对IoT的依赖,目标就是做最好的服务器版本的发行版本。并且和上游保持一致,可以自由扩展。

  1. 下载一键安装工具k8e:
curl -sfL https://getk8e.com/install.sh | sh -
  1. 启动集群过程:
  • 注意主机系统必须满足:Linux kernel >= 4.9.17
  • 第一台,是引导服务(注意:第一台主机IP就是api-server的IP):
# sudo vi /etc/systemd/system/k8e.service.env 添加 K8E_TOKEN,K8E_NODE_NAME,K8E_CLUSTER_INIT
# K8E_TOKEN=ilovek8e
# K8E_NODE_NAME=k8e-test-1
# K8E_CLUSTER_INIT=true
# 启动服务
sudo systemctl start k8e

更方便企业级入门者学习。

开源项目k8e是我开发的,请尽情使用,反馈切磋

第二章nging启动失败报错

遇到nginx启动报错出现
Oct 02 00:51:40 hdss7-11.host.com nginx[121227]: nginx: [emerg] bind() to 0.0.0.0:7443 failed (13: Permission denied)
多次确认配置文件没问题的情况下

可以尝试使用
setsebool -P httpd_can_network_connect 1
执行这个命令后,SELinux将允许Nginx进行网络连接,通常可以解决Nginx绑定端口时的权限问题。
ausearch -c 'nginx' --raw | audit2allow -M my-nginx
semodule -X 300 -i my-nginx.pp
这将尝试生成并应用一个SELinux策略模块,以允许Nginx绑定到端口 7443。
进行这俩操作后,可以使nginx正常启动

本地版本第二章:安装部署主控节点ETCD——健康检查:无法连接peer服务器

证书已经从200服务器进行了下载,并且对比过证书的密钥是一致的

22主机:
[root@hdss7-22 etcd]# ./etcdctl cluster-health
cluster may be unhealthy: failed to list members
Error: client: etcd cluster is unavailable or misconfigured; error #0: dial tcp 127.0.0.1:4001: getsockopt: connection refused
; error #1: client: endpoint http://127.0.0.1:2379 exceeded header timeout

error #0: dial tcp 127.0.0.1:4001: getsockopt: connection refused
error #1: client: endpoint http://127.0.0.1:2379 exceeded header timeout

日志:
2024-04-20 19:38:15.556310 W | rafthttp: health check for peer 988139385f78284 could not connect: x509: certificate has expired or is not yet valid (prober "ROUND_TRIPPER_RAFT_MESSAGE")
2024-04-20 19:38:15.556741 W | rafthttp: health check for peer 988139385f78284 could not connect: x509: certificate has expired or is not yet valid (prober "ROUND_TRIPPER_SNAPSHOT")
2024-04-20 19:38:15.561983 W | rafthttp: health check for peer f4a0cb0a765574a8 could not connect: x509: certificate has expired or is not yet valid (prober "ROUND_TRIPPER_RAFT_MESSAGE")
2024-04-20 19:38:15.564622 W | rafthttp: health check for peer f4a0cb0a765574a8 could not connect: x509: certificate has expired or is not yet valid (prober "ROUND_TRIPPER_SNAPSHOT")

第五章jenkins build项目的时候,提示不能链接10.4.7.200:443,请问如何解决

我的harbor只能http访问,没有配置https访问,jenkins构建项目的时候默认用https访问harbor,发生报错:failed to do request: Head "https://harbor.od.com/v2/base/jre8/manifests/8u112": dial tcp 10.4.7.200:443: connect: connection refused,请问如何解决

前提:http://harbor.od.com各个机器都能正常访问,各个机器和jenkins容器docker login harbor.od.com也能成功,不过访问443端口确实失败,因为harbor没有配置https访问

error

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.