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

23|视频:中级篇实操总结

你好,我是 Chrono。
到今天我们“中级篇”的学习也告一段落了,在这段时间里我们使用 kubeadm 搭建了更接近生产环境的多节点 Kubernetes 集群,然后学习了 Deployment、DaemonSet、Service、Ingress 这 4 个非常重要的 API 对象。
这节课作为对“中级篇”的总结和回顾,仍然是视频的形式,把前面几节课里的一些操作都实际演示出来,方便你对照着操作上下文来学习。
首先我会带你看看 kubeadm 搭建集群的完整过程,然后编写 YAML 文件,示范 Deployment、DaemonSet、Service、Ingress 等对象的具体用法,最后是使用这些对象搭建 WordPress 网站。
让我们开始视频课程的学习吧。
一点说明:视频是我的操作实录,有些包安装比较慢,屏幕会几秒没有动作,在参考视频以及你自己操作的时候可以耐心一些。

一. 安装 kubeadm

00:00 / 00:00
    1.0x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00
    我们先来安装 Master 节点,当然在这之前你需要保证已经安装好了 Docker(安装参考第 1 讲)。
    首先四步准备工作:改主机名、改 Docker 配置、改网络设置、改交换分区。
    修改主机名,把它改成 master
    sudo vi /etc/hostname
    确认放弃笔记?
    放弃后所记笔记将不保留。
    新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
    批量公开的笔记不会为你同步至部落
    公开
    同步至部落
    取消
    完成
    0/2000
    荧光笔
    直线
    曲线
    笔记
    复制
    AI
    • 深入了解
    • 翻译
      • 英语
      • 中文简体
      • 中文繁体
      • 法语
      • 德语
      • 日语
      • 韩语
      • 俄语
      • 西班牙语
      • 阿拉伯语
    • 解释
    • 总结

    本文以视频形式呈现,通过实际演示展示了使用kubeadm搭建多节点Kubernetes集群,以及学习Deployment、DaemonSet、Service、Ingress等API对象的具体用法。文章首先介绍了安装kubeadm的过程,包括改主机名、改Docker配置、改网络设置、改交换分区等准备工作,然后演示了kubeadm的安装和Kubernetes的初始化过程。接着,文章展示了Kubernetes集群的部署过程,包括Master节点和Worker节点的安装以及节点状态的检查。随后,文章详细介绍了Deployment和DaemonSet的使用方法,包括生成样板文件、创建对象、查看状态以及应用伸缩功能等操作。接着,文章介绍了Service的使用,包括创建Service对象、验证Service代理后端Pod、使用NodePort方式对外暴露服务等。最后,文章讲解了Ingress的使用,包括创建Ingress对象、关联Ingress Class、定义路由规则等。最后,文章通过搭建WordPress网站的实际操作展示了Deployment、Service、Ingress等对象的用法。整体而言,本文通过实际操作演示了Kubernetes中级篇的内容,为读者提供了一手的操作指南和技术实践经验,具有很高的参考价值。

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

    全部留言(17)

    • 最新
    • 精选
    • YueShi
      1、推荐之前的课程全都自己完成一遍,然后在看这个实战视频,就有点查漏补缺的味道了,看的很轻松 2、关于楼上同学“按道理应该是进入Service”的困惑,有感,K8S的基本思想就是组合和适配器模式,在k8s里感觉万物皆可组合,如果不能满足,基于现有的api在适配出一个api出来,组合和适配在k8s里是互逆的 3、同志们继续学呀,在坚持学一节,就甩掉了很多人,加油💪💪💪💪

      作者回复: very nice!

      2022-08-14归属地:北京
      9
    • 小江爱学术
      老师问个问题呀 kubectl get deploy kubectl get svc kubectl get pod -n nginx-ingress 从这里可以看出应用的deploy以及svc是在default命名空间下的,ingress是在自己的nginx-ingress命名空间下,他们在k8s中不属于一个命名空间。但是在ingress rule的配置里,关于backend的配置直接用的service的名字,是因为如果这里不提供具体的命名空间的名字,他会自动认为是default吗。谢谢。

      作者回复: 是的,如果不写具体的名字空间,默认就是default。

      2022-10-08归属地:北京
      3
    • 花花大脸猫
      遇到个奇怪的问题,在node节点执行kubeadm join的时候,都会卡死,然后通过--v=5,发现连接master一直拒绝:I0816 23:05:48.343080 5359 token.go:217] [discovery] Failed to request cluster-info, will try again: Get "https://10.0.3.15:6443/api/v1/namespaces/kube-public/configmaps/cluster-info?timeout=10s": dial tcp 10.0.3.15:6443: connect: connection refused,看解决方案有说在kubeadm init的时候需要指定(108是我node节点的虚拟机IP)--apiserver-cert-extra-sans 192.168.56.108 --apiserver-advertise-address 192.168.56.108 \,凌乱了

      作者回复: 首先保证kubeadm的版本正确,然后记得token也要正确,好像token是有时效的,过期了就要重新生成。

      2022-08-16归属地:北京
      2
      3
    • peter
      请教老师几个问题: Q1:“kubeadm join”命令里的token的时效性没有起作用。 讲kubeadm的时候,提到:“kubeadm join”命令里的token有时效性,默认是24小时。 但是,我的集群环境创建成功后,master虚拟机启动后k8s自动运行,worker虚拟机启动后自动 连接到master,一个多星期了还是这样,好像token永远不会过期,为什么? Q2:是否需要清理环境,有一键清除的命令吗? 老师的视频,每一个视频的环境都是干净的,和其他视频无关。 而我的操作不是这样。我的操作是:每一讲都在同一个集群环境中操作,操作之前也没有清理 以前的东西,比如以前创建的POD、deploy等都存在。这种操作方法不好吧,应该清理吧。 如果需要清理,有一键清除的命令吗?还是需要逐个删除?比如逐个查看cm、ds、POD等。 Q3:Service代理POD后,用exec进入POD,再用curl访问。 请问:为什么是进入POD,Service代理POD,按道理应该是进入Service呀。 Q4:删除service的时候,也必须删除deploy吗? 视频中的删除方法是: kubectl delete -f deploy.yml -f svc.yml, 有两个子问题: 第一,这里的deploy.yml应该是对应svc.yml吧,就是说svc.yml创建的service, 代理的POD是由deploy.yml创建出来的,对吧。 另外,可以只删除service而不删除service代理的POD吗? Q5:两种删除方法都可以吗? 第一种:kubectl delete delploy xxx 第二种:kubctl delete -f deploy.yml 第一种方法中的xxx是第二种方法中的 deploy.yml创建出来的。 这两种方法都可以吗? 而且,好像所有的对象都有这两种删除方法。

      作者回复: 1.应该是有时效的,现在也许变了?不确定。 2.如果都是用YAML 部署的,可以用“delete -f . ”来删除所有对象。 3.因为域名、IP地址都是在Kubernetes里的,外界访问不了,进pod就可以了。Service是个虚地址,无法进入,只有pod是实体。 4.不必要,Service和Deployment是彼此独立的,我是为了省事连续删除。 5.当然可以,本质上是一样的,都是找到相应的pod。

      2022-08-12归属地:北京
      2
      2
    • 牙小木
      如果忘了了master的join 信息也没关系,可以执行 kubeadm token create --print-join-command 如果没有信息,或者过期了,可以执行 kubeadm token create

      作者回复: great

      2023-07-28归属地:北京
      1
    • Greenery
      老师,这个wp-kic中的service是什么作用的?我访问30080端口显示nginx404...

      作者回复: 给Ingress controller暴露对外的服务端口,404是不是Ingress没有配置好。

      2023-06-25归属地:中国香港
      1
    • 吃鸡吃鸡
      如果Ingress Controller的service换成云厂商slb/alb,那么入口服务发现能的重任就在负载均衡了

      作者回复: yes

      2023-04-07归属地:北京
      1
    • 农民园丁
      八. 搭建 WordPress 网站 访问http://wp.test/进入安装页面,但是之后登录浏览器显示跳转到以下连接时: http://wp.test/wp-login.php?redirect_to=http%3A%2F%2Fwp.test%2Fwp-admin%2F&reauth=1 没有登录,还是停在登录界面,用户名和密码都输对了。 请教这是上面问题? 还有就是宿主机的hosts将wp.host与其中1个节点绑定,还是任意1个节点都可以,实验发现好像只能绑定其中1个节点。

      作者回复: 这个好像是WordPress程序跳转的原因,不了解它的用法,所以不知道改怎么解决。 好在不影响我们学习Kubernetes,只要WordPress跑起来,就证明Kubernetes部署成功,剩下是应用层面的问题。

      2023-01-14归属地:内蒙古
      1
    • 无为
      老师您好, 您的课程非常的易学. 我有一个问题, 我本地的 kubeadm 并没有使用docker images 的镜像, 是我漏了什么步骤吗?

      作者回复: 感觉问题没有太说清楚,没能理解,sorry。 kubeadm安装是必须要拉取镜像的,如果能直接访问gcr.io,就可以不用脚本,直接kubeadm自己就能拉取镜像安装了。

      2022-12-04归属地:北京
      2
      1
    • MonsterCale
      worker节点kubeadm join之后,worker节点上kubectl get nodes能看到master、worker节点都Ready了,master节点kubectl get nodes只能看到master节点看不到worker节点,这是为什么

      作者回复: 这个不应该啊,把worker删除重装试试吧。

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