22|实战演练:玩转Kubernetes(2)
Kubernetes 技术要点回顾
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了在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归属地:北京37 - 大毛以下是我在进行操作时遇到的坑,给大家填一下: 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归属地:北京26 - 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归属地:四川24 - 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归属地:上海24 - 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归属地:北京63