前面我们和大家一起学习了一些基本的资源对象的使用方法,前面我们也和大家讲到了有状态的应用和对数据有持久化的应用,我们有通过 hostPath
或者 emptyDir
的方式来持久化我们的数据,但是显然我们还需要更加可靠的存储来保存应用的持久化数据,这样容器在重建后,依然可以使用之前的数据。但是显然存储资源和 CPU 资源以及内存资源有很大不同,为了屏蔽底层的技术实现细节,让用户更加方便的使用,Kubernetes
便引入了 PV
和 PVC
两个重要的资源对象来实现对存储的管理。
阳明的博客
大家好,我叫阳明,前小米高级开发工程师,现在回到家乡成都,独立开发者一枚,一个有着产品思维的工程师,现在也在努力将自己的产品思维体系化,全栈工程师,现阶段专注 Kubernetes 和 AIGC,创建了「k8s技术圈」社区、「优点知识」知识付费网站以及「快课星球」AI全栈开发学习网站。我可以提供企业容器化方面的知识培训和咨询工作,感兴趣的可以通过微信 gitops 和我联系。
Mac 下安装 cryptography 失败
在Mac
下面安装cryptography
依赖包,始终报错,出现'openssl/opensslv.h' file not found
的错误。
Kubernetes RBAC 详解
前面两节课我们学习了Kubernetes
中的两个用于配置信息的重要资源对象:ConfigMap
和Secret
,其实到这里我们基本上学习的内容已经覆盖到Kubernetes
中一些重要的资源对象了,来部署一个应用程序是完全没有问题的了。在我们演示一个完整的示例之前,我们还需要给大家讲解一个重要的概念:RBAC
- 基于角色的访问控制。
Secret 的使用
上节课我们学习了ConfigMap
的使用,我们说ConfigMap
这个资源对象是Kubernetes
当中非常重要的一个对象,一般情况下ConfigMap
是用来存储一些非安全的配置信息,如果涉及到一些安全相关的数据的话用ConfigMap
就非常不妥了,因为ConfigMap
是明文存储的,我们说这个时候我们就需要用到另外一个资源对象了:Secret
,Secret
用来保存敏感信息,例如密码、OAuth 令牌和 ssh key等等,将这些信息放在Secret
中比放在Pod
的定义中或者docker
镜像中来说更加安全和灵活。
Service 的使用
我们前面的课程中学习了Pod
的基本用法,我们也了解到Pod
的生命是有限的,死亡过后不会复活了。我们后面学习到的RC
和Deployment
可以用来动态的创建和销毁Pod
。尽管每个Pod
都有自己的IP
地址,但是如果Pod
重新启动了的话那么他的IP
很有可能也就变化了。这就会带来一个问题:比如我们有一些后端的Pod
的集合为集群中的其他前端的Pod
集合提供API
服务,如果我们在前端的Pod
中把所有的这些后端的Pod
的地址都写死,然后去某种方式去访问其中一个Pod
的服务,这样看上去是可以工作的,对吧?但是如果这个Pod
挂掉了,然后重新启动起来了,是不是IP
地址非常有可能就变了,这个时候前端就极大可能访问不到后端的服务了。
Job和CronJob 的使用方法
上节课我们学习了Pod
自动伸缩的方法,我们使用到了HPA
这个资源对象,我们在后面的课程中还会和大家接触到HPA
的。今天我们来给大家介绍另外一类资源对象:Job,我们在日常的工作中经常都会遇到一些需要进行批量数据处理和分析的需求,当然也会有按时间来进行调度的工作,在我们的Kubernetes
集群中为我们提供了Job
和CronJob
两种资源对象来应对我们的这种需求。
RC、RS 使用方法
前面我们的课程中学习了Pod
的一些基本使用方法,而且前面我们都是直接来操作的Pod
,假如我们现在有一个Pod
正在提供线上的服务,我们来想想一下我们可能会遇到的一些场景:
- 某次运营活动非常成功,网站访问量突然暴增
- 运行当前
Pod
的节点发生故障了,Pod
不能正常提供服务了
第一种情况,可能比较好应对,一般活动之前我们会大概计算下会有多大的访问量,提前多启动几个Pod
,活动结束后再把多余的Pod
杀掉,虽然有点麻烦,但是应该还是能够应对这种情况的。
第二种情况,可能某天夜里收到大量报警说服务挂了,然后起来打开电脑在另外的节点上重新启动一个新的Pod
,问题也很好的解决了。
名称解释OCI、runc、containerd、Docker、CRI、CRI-O
TODO
初始化容器
上节课我们学习了容器的健康检查的两个探针:liveness probe(存活探针)和 readiness probe(可读性探针)的使用方法,我们说在这两个探针是可以影响容器的生命周期的,包括我们之前提到的容器的两个钩子函数 PostStart 和 PreStop 。我们今天要给大家介绍的是Init Container
(初始化容器)。
Kubernetes Pod 工作流
我们知道Pod
是Kubernetes
中最小的调度单元,平时我们操作Pod
的时间也是最多的,那么你知道Pod
是怎样被创建出来的吗?知道他的工作流程吗?
Django2.0 实战项目
在本课程中,你将学习如何使用Django2.0
快速开发一个WEB 应用
,了解到在实际开发过程中关于Django
的一些最佳实践技巧,学习到Django2.0
与1.x
版本的一些异同点以及优势。无论你之前是否学习过 Django 应用框架,通过本课程你都将能够很快速的掌握 Django 的使用。
使用kubeadm搭建kubernetes1.10集群
kubeadm
是Kubernetes
官方提供的用于快速安装 Kubernetes 集群的工具,通过将集群的各个组件进行容器化安装管理,通过kubeadm
的方式安装集群比二进制的方式安装要方便不少,但是目录kubeadm
还处于beta
状态,还不能用于生产环境,Using kubeadm to Create a Cluster文档中已经说明kubeadm
将会很快能够用于生产环境了。
所以现在来了解下kubeadm
的使用方式的话还是很有必要的,对于现阶段想要用于生产环境的,建议还是参考我们前面的文章:手动搭建高可用的kubernetes 集群或者视频教程。