Kubernetes 入门实战课
罗剑锋
Kong 高级工程师,Nginx/OpenResty 开源项目贡献者
19527 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 41 讲
Kubernetes 入门实战课
15
15
1.0x
00:00/00:00
登录|注册

22|实战演练:玩转Kubernetes(2)

你好,我是 Chrono。
我们的“中级篇”到今天马上就要结束了,感谢你这段时间坚持不懈的学习。
作为“中级篇”的收尾课程,我照例还是会对前面学过的内容做一个全面的回顾和总结,把知识点都串联起来,加深你对它们的印象。
下面我先梳理一下“中级篇”里讲过的 Kubernetes 知识要点,然后是实战演示,搭建 WordPress 网站。当然这次比前两次又有进步,不用 Docker,也不用裸 Pod,而是用我们新学习的 Deployment、Service、Ingress 等对象。

Kubernetes 技术要点回顾

Kubernetes 是云原生时代的操作系统,它能够管理大量节点构成的集群,让计算资源“池化”,从而能够自动地调度运维各种形式的应用。
搭建多节点的 Kubernetes 集群是一件颇具挑战性的工作,好在社区里及时出现了 kubeadm 这样的工具,可以“一键操作”,使用 kubeadm initkubeadm join 等命令从无到有地搭建出生产级别的集群(17 讲)。
kubeadm 使用容器技术封装了 Kubernetes 组件,所以只要节点上安装了容器运行时(Docker、containerd 等),它就可以自动从网上拉取镜像,然后以容器的方式运行组件,非常简单方便。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了在Kubernetes集群中搭建WordPress网站的实战演练过程。首先回顾了Kubernetes的核心概念,包括Deployment、DaemonSet、Service、Ingress等API对象,并介绍了它们在实际应用中的作用和特点。随后,文章以搭建WordPress网站为例,详细讲解了如何使用这些API对象来构建一个基于Kubernetes集群的网站架构。通过使用Deployment、Service、Ingress等对象,文章展示了如何在Kubernetes集群中部署MariaDB数据库和WordPress应用,并通过YAML声明文件逐步完成了网站的搭建过程。 总的来说,本文通过实际案例向读者展示了如何利用Kubernetes的核心概念和API对象来构建一个完整的网站架构,强调了Kubernetes在应用部署和管理方面的优势和灵活性。读者可以通过本文了解Kubernetes的实际应用场景,以及如何利用Kubernetes的特性来构建稳定、高可用的应用系统。文章还提到了在后续的“高级篇”中将学习持久化存储对象PersistentVolume,以及有状态的StatefulSet等对象,进一步完善网站架构。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Kubernetes 入门实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(46)

  • 最新
  • 精选
  • YueShi
    使用http://wp.test/访问,需要在host改wp-kic-dep部署的那个节点的ip才可以

    作者回复: great

    2022-08-12归属地:北京
    8
  • dao
    因为前面几节都是按照文稿来演练,坑都踩完了,本节很轻松完成。 作业: 1. 直接可以由 deployment 改编一下:修改 Kind,移除 replicas ; 根据需要添加 tolerations 设置。 2. 为 Ingress Controller 创建 Service 对象,用YAML样板来实现吧 ```bash kubectl expose deploy wp-kic-dep --port=80,443 --type=NodePort --name=wp-kic-svc -n nginx-ingress $out ``` 大概的 YAML ```yaml - name: http port: 80 protocol: TCP targetPort: 80 nodePort: 30080 - name: https port: 443 protocol: TCP targetPort: 443 nodePort: 30443 ``` 记得移除 ingress controller deployment 里的 `hostNetwork: true`。 现在就可以愉快地访问 https://wp.test:30443/ 。

    作者回复: great

    2022-08-17归属地:北京
    3
    7
  • 大毛
    以下是我在进行操作时遇到的坑,给大家填一下: 1. 在运行 nginx controller 的时候,pod 的状态一直不是 running,查看日志最后显示的是 bind() to 0.0.0.0:80 failed (13: Permission denied)。经过查资料发现,这是因为在运行 pod 的时候会桥接宿主机的 80 端口,而 80 端口是受保护的。解决办法是在 securityContext 中添加 allowPrivilegeEscalation: true,即可以进行特权升级。(https://github.com/nginxinc/kubernetes-ingress/issues/3932) 2. 不管你用什么设备访问 wp.test,请关掉科学上网软件,否则可能 502

    作者回复: great!

    2023-06-16归属地:北京
    2
    6
  • Lorry
    关于hostNetwork方式,分享一点,就是hostNetwork这种形式虽然可以让外界访问到,但是你一定要让外界机器通过域名,这里是“wp.test”能够路由到这台机器,当然这个很简单,只要在/etc/hosts里面添加一条记录就可以,但是wp.test要映射到哪一台机器?开始我在这个地方卡了好久,以为配置的是master机器,但是其实不是,应该是ingress controller的pod部署的那台机器,通过命令(kubectl get pod -n nginx-ingress -o wide)可以查看到pod是部署的机器,然后决定映射的ip; 这一点文章中有提到,但是容易忽略。

    作者回复: great

    2023-01-26归属地:四川
    2
    4
  • YueShi
    改成DaemonSet只需要把kind的Deployment变成DeamonSet、把replicas注释掉就可以

    作者回复: good

    2022-08-14归属地:北京
    4
  • peter
    老师,22讲最后一步,就是创建nginx controller失败,POD状态是“CrashLoopBackOff”。用logs命令查看,错误信息是: Error when getting IngressClass wp-ink: ingressclasses.networking.k8s.io "wp-ink" is forbidden: User "system:serviceaccount:nginx-ingress:nginx-ingress" cannot get resource "ingressclasses" in API group "networking.k8s.io" at the cluster scope 不知道是什么意思?不知道怎么修改? (能看懂英文,但不知道说的是什么) (注:kic文件是拷贝老师的,https://github.com/chronolaw/k8s_study/blob/master/ch3/wp-kic.yml 完全拷贝,成功创建)

    作者回复: 应该是前面没有安装好Nginx Ingress Controller吧,需要运行Ingress目录里的setup.sh,apply相关的YAML 。

    2022-08-11归属地:上海
    2
    4
  • jason
    老师,wp.test这个域名需要指定ingress controller那个pod所在的节点ip,而ingress controller是通过deployment来管理的,pod重建时可能会被部署到别的节点,这样不是又要改host配置了吗?想问一下生产环境是怎样解决这个问题的。

    作者回复: 生产环境用的一般是把Ingress Controller的service配置成LoadBalancer,云厂商会自动分配IP地址,我们这个是实验环境,所以比较简陋。

    2023-03-01归属地:广东
    3
  • 笨晓孩
    老师,我部署完wp-svc之后,通过nodeIP:30088的方式没办法访问Wordpress页面,采用的是nodeport的方式

    作者回复: 先看一下Service是否正常,里面的endpoint是否是WordPress的pod,在集群节点或者pod里ping WordPress,看pod是否正常。 我感觉应该还是Service没有设置好。

    2022-10-27归属地:上海
    3
  • Geek_2ce074
    老师你好,Ingress Controller 对象,在哪个 Nginx 项目的示例 YAML 里有呀,根本找不到呀

    作者回复: 参考这个:https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-manifests/

    2022-08-10归属地:北京
    3
  • romance
    老师,数据库配置没问题,svc也正常,但访问网站时提示 Error establishing a database connection,不知道什么原因

    作者回复: 应该是WordPress配置的不对吧,看看环境变量的设置。

    2022-08-10归属地:北京
    6
    3
收起评论
显示
设置
留言
46
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部