CustomResourceDefinition(CRD)是 v1.7 + 新增的无需改变代码就可以扩展 Kubernetes API 的机制,用来管理自定义对象。它实际上是 ThirdPartyResources(TPR) 的升级版本,而 TPR 已经在 v1.8 中删除
一些使用场景:
提供/管理外部数据存储/数据库(例如 CloudSQL/RDS 实例)
对k8s基础资源进行更高层次的抽象(比如定义一个etcd集群)
其实crd在很多k8s周边开源项目中有使用,比如ingress-controller和众多的operator。
官方的参考文档地址:https://kuberne...
1.注册slack账号
打开slack官网
2.邮箱注册
3.到邮箱去填验证码
4.填自己的名字
5.设置密码
6.填写相关信息
7.填公司名称
8.自定义url
9下一步,可以跳过
10.创建频道
11安装一个应用 incomming webhooks
写报警规则12cd /promethues //进入到prometheus目录下cp prometheus.yml{,.bak} //先备份配置文件
vim prometheus.yaml
1234567891011121314151617181920212223242526...
先下载官方的部署文件
1wget https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
可以将其中的镜像pull地址改成自己的
之后在末尾加上ingress规则(以下内容补在官方yaml部署文件的最后 , 追加信息)
1234567891011121314apiVersion: extensions/v1beta1kind: Ingressmetadata: name: dashboard-ingress namesp...
##第一种方法
可以添加环境变量 , 推荐使用阿里云的源
12export KUBE_REPO_PREFIX="registry-vpc.cn-beijing.aliyuncs.com/bbt_k8s"export KUBE_ETCD_IMAGE="registry-vpc.cn-beijing.aliyuncs.com/bbt_k8s/etcd-amd64:3.0.17"
还有就是pod的基础镜像pause是从出谷歌的gcr里面拉去的 ,我们修改kubelet的启动参数,让他变成从我们指定的镜像仓库拉去
修改/etc/systemd/system...
通常情况下,我们的集群都是内网集群,只暴露一个公网ip,我希望通过本地访问这个集群,这时候只能通过公网ip访问。 这时候应该怎么配置呢?我们一步一步的思考,刚才我们说了,Kubeadm在初始化的时候会为管理员生成一个 Kubeconfig文件,把它下载下来 是不是就可以?事实证明这样不行, 因为这个集群是内网集群,Kubeconfig文件 中APIServer的地址是内网ip。所以无法访问到。那么我把内网ip改成 APIServer公网ip是不是就可以了 呢?经过实验发现也是不可以的,会报 出认证无法通过的错误。为什么认证无法通过?这要回顾我们刚刚讲过的服务端认证的流程,刚才说一个客户端...
到目前为止,Kubernetes 支持的 Projected Volume 一共有四种:
Secret;
ConfigMap;
Downward API;
ServiceAccountToken。
Secret它的作用,是帮你把 Pod 想要访问的加密数据,存放到 Etcd 中。然后,你就可以通过在 Pod 的容器里挂载 Volume 的方式,访问到这些 Secret 里保存的信息了
典型的场景是数据库的用户名和密码
比如
12345678910....volumes: - name: mysql-cred projected: sources: - se...
Rook 项目是一个基于 Ceph 的 Kubernetes 存储插件(它后期也在加入对更多存储实现的支持)。不过,不同于对 Ceph 的简单封装,Rook 在自己的实现中加入了水平扩展、迁移、灾难备份、监控等大量的企业级功能,使得这个项目变成了一个完整的、生产级别可用的容器存储插
1kubectl apply -f https://raw.githubusercontent.com/rook/rook/master/cluster/examples/kubernetes/ceph/cluster.yaml
1kubectl apply -f https://raw.githubuser...
在kubernetes的v1.11 版本 , 有个 PodPreset(Pod 预设置)的功能
在PodPreset 对象中,凡是想在Pod 里追加的字段,都可以预先定义好 , 比如:
vim podpreset.yaml
1234567891011121314151617apiVersion: settings.k8s.io/v1alpha1kind: PodPresetmetadata: name: allow-databasespec: selector: matchLabels: role: frontend env: - name: DB_PORT ...
kubernetes中的控制器就是运行在master上的kube-controller-manager , 这个组件,就是一系列控制器的集合
在github上kubernetes项目(具体地址为https://github.com/kubernetes/kubernetes/tree/master/pkg/controller)中的`pkg/controller` 目录下 , 可以看到有许多的子文件夹 , 这些都是一些控制器模型 , 包括我们常用的Deployment等等 , 这每一个子文件夹就是一个控制器 , 负责某个编排功能
控制器的逻辑大概如下:
123456789for ...
在所有 API 对象的 Metadata 里,都有一个字段叫作 ownerReference,用于保存当前这个 API 对象的拥有者(Owner)的信息
对于一个 Deployment 所管理的 Pod,它的 ownerReference 是谁?
答案就是:ReplicaSet
Deployment 控制 ReplicaSet(版本),ReplicaSet 控制 Pod(副本数)
举例说明:
首先,我们来创建这个 nginx-deployment:
1$ kubectl create -f nginx-deployment.yaml --record
查看一下这个 Deployment ...