1.configmap
k8s通过configmap来实现对容器中应用的配置管理;
创建configmap的方式有两种,一是通过yaml文件创建,另一种是通过kubectl命令创建。
通过yaml文件:
cat test-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: test-cfg
namespace: default
data:
cache_host: memcached-gcxt
cache_port: "11211"
cache_prefix: gcxt
my.cnf: |
[mysqld]
log-bin = mysql-bin
app.properties: |
property.1 = value-1
property.2 = value-2
property.3 = value-3
kubectl create -f test-config.yaml
通过kubectl命令:
使用命令
kubectl create configmap test-config1 --from-literal=db.host=172.17.1.66 --from-literal=db.port='3306'
将目录下所有文件创建为configmap:
kubectl create configmap test-config2 --from-file=./configs
将一个配置文件创建为一个configmap:
kubectl create configmap test-config3 --from-file=./db.conf
通过以下方式查看configmaps:
kubectl get configmaps
kubectl get configmap test-config -o yaml
kubectl describe configmap test-config
使用configmap的方式有三种,
- 通过环境变量的方式传递给pod;
- 通过pod命令行运行;
- 使用volume方式挂载;
2.Kubernetes的核心组件包括:
- etcd保存了整个集群的状态;
- apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
- controller manager负责维护集群的状态,如故障检测、自动扩展、滚动更新;
- scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的节点上;
- kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
- Container runtime负责镜像管理以及pod和container的运行(CRI);
- kubectl-proxy负责为service提供cluster内部的服务发现和负载均衡;
除以上核心组件外,还包含:
- kube-dns负责为整个集群提供DNS服务
- Ingress Controller为服务提供外网入口
- Heapster提供资源监控
- Dashboard提供GUI
- Federation提供跨可用区的集群
- Fluentd-elasticsearch提供集群日志采集、存储与查询
基于属性的访问控制(Attribute-based Access Control,ABAC)
基于角色的访问控制(Role-based Access Control,RBAC)