开源容器安全平台NeuVector初探

NeuVector提供全面的容器安全解决方案,包括构建、部署和运行时的保护,具有漏洞扫描、运行时保护、合规性审计等功能。它支持多种Kubernetes平台,且100%开源,确保灵活性和可靠性。NeuVector由Controller、Enforcer、Manager和Scanner等组件构成,可进行多集群管理和高可用性部署。
摘要由CSDN通过智能技术生成

一 背景

NeuVector业界首个端到端的开源容器安全平台,唯一为容器化工作负载提供企业级零信任安全的解决方案。 NeuVector 是业界领先的安全和合规解决方案,已被全球知名企业广泛采用;其代码库的开源不仅使 NeuVector 成为开源社区的首选技术,还为受严格监管的客户(包括政企、金融)提供了更可靠的保证。

NeuVector开源容器镜像可以安装在任何Kubernetes集群上。 支持包括红帽OpenShift、VMWare Tanzu、Google GKE、Amazon EKS、Microsoft Azure AKS等在内的众多企业级容器管理平台。

NeuVector 将驱动 SUSE 旗舰 Kubernetes 管理平台——SUSE Rancher 的容器安全创新,此举将有助于推动Kubernetes安全领域的重大生态系统革新,此前这一领域通常由闭源的专有解决方案主导。

二 NeuVector简介

2.1 功能特性

NeuVector 提供强大的端到端容器安全平台。这包括对容器、Pod 和主机的端到端漏洞扫描和完整的运行时保护,包括:

  • CI/CD 漏洞管理和准入控制,使用 Jenkins 插件扫描镜像、扫描注册表并强制实施准入控制规则以将其部署到生产环境中。

  • 违规保护,发现行为并创建基于白名单的策略来检测违反正常行为的行为。

  • 威胁检测,检测容器上的常见应用程序攻击,例如 DDoS 和 DNS 攻击。

  • DLP 和 WAF 传感器。检查网络流量以防止敏感数据丢失,并检测常见的 OWASP Top10 WAF 攻击。

  • 运行时漏洞扫描。扫描注册表、镜像和正在运行的容器编排平台和主机以查找常见 (CVE) 以及特定于应用程序的漏洞。

  • 合规与审计。自动运行 Docker Bench 测试和 Kubernetes CIS Benchmarks。

  • 端点/主机安全。检测权限升级,监控主机和容器内的进程和文件活动,并监控容器文件系统的可疑活动。

  • 多集群管理。从单个控制台监控和管理多个 Kubernetes 集群。

NeuVector 的其他特性包括隔离容器和通过 SYSLOG 和 webhooks 导出日志的能力,为调查启动数据包捕获,以及与 OpenShift RBACs、 LDAP、 Microsoft AD 和 SSO 与 SAML 的集成。注意: 隔离意味着所有网络通信都被阻塞。容器将保持并继续运行——只是没有任何网络连接。Kubernetes 不会启动一个容器来替换隔离的容器,因为 api-服务器仍然能够到达容器。

2.2 全生命周期安全

  • 构建:镜像构建扫描,避免生成有隐患的镜像

  • 部署:通过准入控制策略机制,避免有隐患的镜像和不符合策略要求的容器部署到环境

  • 运行:四层/七层防火墙避免外部攻击和数据窃取

  • 运行:东西向网络动态微隔离,避免内部攻击扩展。WAF防火墙避免外部攻击。

  • 运行:容器内病毒、木马、破解器防护.

  • 主机、Runtime、 K8S级别安全基线扫描,合规性评估。

2.3 优势

  • 开放性: 100%开源,无需担心供应商锁定。

  • 灵活性:灵活部署各类Kubernetes发行版, Rancher、Openshift、EKS、 GKE、ACK、 TKE。

  • 可靠性: 7年迭代,成熟稳定产品。

  • 专业性:专业支持服务,保障业务安全可靠持续运行。

三 组件构成即部署模式

NeuVector 运行时容器安全方案包括四种类型安全容器:Controllers,Enforcers,Managers,Scanners。

其能够部署为一个 Allinone 的特殊容器,也能即将个功能组合在一个容器总,当然也可以在虚拟机或单个操作系统的裸机上面部署。

3.1 Controller

Controller 管理 NeuVector Enforcer 容器集群。它还为管理控制台提供 REST api。虽然典型的测试部署只有一个 Controller,但是建议在高可用性配置中使用多个 Controller。控制器是 Kubernetes Production 部署示例 yaml 中的默认控制器。

3.2 Enforce

Enforcer 是一个轻量级容器,用于强制执行安全策略。应该在每个节点(主机)上部署一个执行器,例如作为一个守护进程集。注意: 对于 Docker 本地(非 Kubernetes)部署,执行器容器和控制器不能部署在同一个节点上(下面的 All-in-One 情况除外)。

3.3 Manager

Manager 是一个无状态容器,它为用户提供 Web-UI(仅限 HTTPS)和 CLI 控制台以管理 NeuVector 安全解决方案。可以根据需要部署多个 Manager 容器。

3.4 Scanner

扫描器是一个容器,它执行对图像、容器和节点的漏洞和顺应性扫描。它通常作为一个副本部署,并可以扩大到所需的许多并行扫描仪,以提高扫描性能。Controller 以循环的方式将扫描作业分配给每个可用的扫描器,直到所有扫描完成。扫描仪还包含最新的 CVE 数据库,并由 NeuVector 定期更新。

四 平台功能

NeuVector提供操作系统/Runtime/K8s/容器应用三个层面安全业务进行保护。

五 部署

5.1 Helm部署

  • 添加 repo


helm repo add neuvector https://neuvector.github.io/neuvector-helm/
helm search repo neuvector/core 

kubectl create namespace neuvector

kubectl create serviceaccount neuvector -n neuvector

helm install neuvector --namespace neuvector neuvector/core--set registry=docker.io--set

tag=5.0.0-preview.1 --set=controller.image.repository=neuvector/controller.preview --

set=enforcer.image.repository=neuvector/enforcer.preview --set

manager.image.repository=neuvector/manager.preview --set

cve.scanner.image.repository=neuvector/scanner.preview --set cve.updater.image.repository=neuvector/updater.preview

NAME: my-release

LAST DEPLOYED: Wed Jan 19 21:04:03 2022

NAMESPACE: neuvector

STATUS: deployed

REVISION: 1

TEST SUITE: None

NOTES:

Get the NeuVector URL by running these commands:NODE_PORT=$(kubectl get --namespace neuvector -o jsonpath="{.spec.ports[0].nodePort}" services neuvector-service-webui)NODE_IP=$(kubectl get nodes --namespace neuvector -o jsonpath="{.items[0].status.addresses[0].address}")echo https://$NODE_IP:$NODE_PORT



Helm-chart 参数查看:

[github.com/neuvector/n…](https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2Fneuvector%2Fneuvector-helm%2Ftree%2Fmaster%2Fcharts%2Fcore "https://github.com/neuvector/neuvector-helm/tree/master/charts/core")

### 5.2 资源清单部署

#### 5.2.1 安装环境

软件版本:

Kubernetes:1.20.14

Docker:19.03.15

NeuVector:5.0.0-preview.1



#### 5.2.2 开始执行安装

* 创建 namespace

kubectl create namespace neuvector



* 部署 CRD( Kubernetes 1.19+ 版本)

kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/crd-k8s-1.19.yaml



* 部署 CRD(Kubernetes 1.18或更低版本)

kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/crd-k8s-1.16.yaml



* 配置 RBAC

kubectl create clusterrole neuvector-binding-app --verb=get,list,watch,update --resource=nodes,pods,services,namespaces

kubectl create clusterrole neuvector-binding-rbac --verb=get,list,watch --resource=rolebindings.rbac.authorization.k8s.io,roles.rbac.authorization.k8s.io,clusterrolebindings.rbac.authorization.k8s.io,clusterroles.rbac.authorization.k8s.io

kubectl create clusterrolebinding neuvector-binding-app --clusterrole=neuvector-binding-app --serviceaccount=neuvector:default

kubectl create clusterrolebinding neuvector-binding-rbac --clusterrole=neuvector-binding-rbac --serviceaccount=neuvector:default

kubectl create clusterrole neuvector-binding-admission --verb=get,list,watch,create,update,delete --resource=validatingwebhookconfigurations,mutatingwebhookconfigurations

kubectl create clusterrolebinding neuvector-binding-admission --clusterrole=neuvector-binding-admission --serviceaccount=neuvector:default

kubectl create clusterrole neuvector-binding-customresourcedefinition --verb=watch,create,get --resource=customresourcedefinitions

kubectl create clusterrolebindingneuvector-binding-customresourcedefinition --clusterrole=neuvector-binding-customresourcedefinition --serviceaccount=neuvector:default

kubectl create clusterrole neuvector-binding-nvsecurityrules --verb=list,delete --resource=nvsecurityrules,nvclustersecurityrules

kubectl create clusterrolebinding neuvector-binding-nvsecurityrules --clusterrole=neuvector-binding-nvsecurityrules --serviceaccount=neuvector:default

kubectl create clusterrolebinding neuvector-binding-view --clusterrole=view --serviceaccount=neuvector:default

kubectl create rolebinding neuvector-admin --clusterrole=admin --serviceaccount=neuvector:default -n neuvector



* 检查是否有以下 RBAC 对象

kubectl get clusterrolebinding| grep neuvectorkubectl get rolebinding -n neuvector | grep neuvector

kubectl get clusterrolebinding| grep neuvector

neuvector-binding-admissionClusterRole/neuvector-binding-admission44hneuvector-binding-appClusterRole/neuvector-binding-app44hneuvector-binding-customresourcedefinition ClusterRole/neuvector-binding-customresourcedefinition 44hneuvector-binding-nvadmissioncontrolsecurityrulesClusterRole/neuvector-binding-nvadmissioncontrolsecurityrules44hneuvector-binding-nvsecurityrulesClusterRole/neuvector-binding-nvsecurityrules44hneuvector-binding-nvwafsecurityrules ClusterRole/neuvector-binding-nvwafsecurityrules 44hneuvector-binding-rbac ClusterRole/neuvector-binding-rbac 44hneuvector-binding-view ClusterRole/view 44h


 

kubectl get rolebinding -n neuvector | grep neuvectorneuvector-admin ClusterRole/admin44hneuvector-binding-psp Role/neuvector-binding-psp 44h



* 部署 NeuVector* 底层 Runtime 为 Docker

kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/neuvector-docker-k8s.yaml



底层 Runtime 为 Containerd(对于 k3s 和 rke2 可以使用此 yaml 文件)

kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/neuvector-containerd-k8s.yaml



1.21 以下的 Kubernetes 版本会提示以下错误,将 yaml 文件下载将 batch/v1 修改为 batch/v1beta1

error: unable to recognize "https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/neuvector-docker-k8s.yaml": no matches for kind "CronJob" in version "batch/v1"



1.20.x cronjob 还处于 beta 阶段,1.21 版本开始 cronjob 才正式 GA 。

默认部署web-ui使用的是loadblance类型的Service,为了方便访问修改为NodePort,也可以通过 Ingress 对外提供服务

kubectl patchsvc neuvector-service-webui-n neuvector --type='json' -p '[{"op":"replace","path":"/spec/type","value":"NodePort"},{"op":"add","path":"/spec/ports/0/nodePort","value":30888}]'



访问 https://node\_ip:30888

默认密码为 admin/admin

#### 5.2.3 访问

由于我采用minikube部署,临时菜哟哦那个port-forward访问测试。

kubectl port-forward --address 0.0.0.0 -n neuvector service/neuvector-service-webui 22222:8443


 

一 背景

NeuVector业界首个端到端的开源容器安全平台,唯一为容器化工作负载提供企业级零信任安全的解决方案。 NeuVector 是业界领先的安全和合规解决方案,已被全球知名企业广泛采用;其代码库的开源不仅使 NeuVector 成为开源社区的首选技术,还为受严格监管的客户(包括政企、金融)提供了更可靠的保证。

NeuVector开源容器镜像可以安装在任何Kubernetes集群上。 支持包括红帽OpenShift、VMWare Tanzu、Google GKE、Amazon EKS、Microsoft Azure AKS等在内的众多企业级容器管理平台。

NeuVector 将驱动 SUSE 旗舰 Kubernetes 管理平台——SUSE Rancher 的容器安全创新,此举将有助于推动Kubernetes安全领域的重大生态系统革新,此前这一领域通常由闭源的专有解决方案主导。

二 NeuVector简介

2.1 功能特性

NeuVector 提供强大的端到端容器安全平台。这包括对容器、Pod 和主机的端到端漏洞扫描和完整的运行时保护,包括:

NeuVector 的其他特性包括隔离容器和通过 SYSLOG 和 webhooks 导出日志的能力,为调查启动数据包捕获,以及与 OpenShift RBACs、 LDAP、 Microsoft AD 和 SSO 与 SAML 的集成。注意: 隔离意味着所有网络通信都被阻塞。容器将保持并继续运行——只是没有任何网络连接。Kubernetes 不会启动一个容器来替换隔离的容器,因为 api-服务器仍然能够到达容器。

2.2 全生命周期安全

2.3 优势

三 组件构成即部署模式

NeuVector 运行时容器安全方案包括四种类型安全容器:Controllers,Enforcers,Managers,Scanners。

其能够部署为一个 Allinone 的特殊容器,也能即将个功能组合在一个容器总,当然也可以在虚拟机或单个操作系统的裸机上面部署。

3.1 Controller

Controller 管理 NeuVector Enforcer 容器集群。它还为管理控制台提供 REST api。虽然典型的测试部署只有一个 Controller,但是建议在高可用性配置中使用多个 Controller。控制器是 Kubernetes Production 部署示例 yaml 中的默认控制器。

3.2 Enforce

Enforcer 是一个轻量级容器,用于强制执行安全策略。应该在每个节点(主机)上部署一个执行器,例如作为一个守护进程集。注意: 对于 Docker 本地(非 Kubernetes)部署,执行器容器和控制器不能部署在同一个节点上(下面的 All-in-One 情况除外)。

3.3 Manager

Manager 是一个无状态容器,它为用户提供 Web-UI(仅限 HTTPS)和 CLI 控制台以管理 NeuVector 安全解决方案。可以根据需要部署多个 Manager 容器。

3.4 Scanner

扫描器是一个容器,它执行对图像、容器和节点的漏洞和顺应性扫描。它通常作为一个副本部署,并可以扩大到所需的许多并行扫描仪,以提高扫描性能。Controller 以循环的方式将扫描作业分配给每个可用的扫描器,直到所有扫描完成。扫描仪还包含最新的 CVE 数据库,并由 NeuVector 定期更新。

四 平台功能

NeuVector提供操作系统/Runtime/K8s/容器应用三个层面安全业务进行保护。

五 部署

5.1 Helm部署


helm repo add neuvector https://neuvector.github.io/neuvector-helm/
helm search repo neuvector/core 
    • Kubernetes部署```
    • CI/CD 漏洞管理和准入控制,使用 Jenkins 插件扫描镜像、扫描注册表并强制实施准入控制规则以将其部署到生产环境中。

    • 违规保护,发现行为并创建基于白名单的策略来检测违反正常行为的行为。

    • 威胁检测,检测容器上的常见应用程序攻击,例如 DDoS 和 DNS 攻击。

    • DLP 和 WAF 传感器。检查网络流量以防止敏感数据丢失,并检测常见的 OWASP Top10 WAF 攻击。

    • 运行时漏洞扫描。扫描注册表、镜像和正在运行的容器编排平台和主机以查找常见 (CVE) 以及特定于应用程序的漏洞。

    • 合规与审计。自动运行 Docker Bench 测试和 Kubernetes CIS Benchmarks。

    • 端点/主机安全。检测权限升级,监控主机和容器内的进程和文件活动,并监控容器文件系统的可疑活动。

    • 多集群管理。从单个控制台监控和管理多个 Kubernetes 集群。

    • 构建:镜像构建扫描,避免生成有隐患的镜像

    • 部署:通过准入控制策略机制,避免有隐患的镜像和不符合策略要求的容器部署到环境

    • 运行:四层/七层防火墙避免外部攻击和数据窃取

    • 运行:东西向网络动态微隔离,避免内部攻击扩展。WAF防火墙避免外部攻击。

    • 运行:容器内病毒、木马、破解器防护.

    • 主机、Runtime、 K8S级别安全基线扫描,合规性评估。

    • 开放性: 100%开源,无需担心供应商锁定。

    • 灵活性:灵活部署各类Kubernetes发行版, Rancher、Openshift、EKS、 GKE、ACK、 TKE。

    • 可靠性: 7年迭代,成熟稳定产品。

    • 专业性:专业支持服务,保障业务安全可靠持续运行。

    • 添加 repo

    kubectl create namespace neuvector

    kubectl create serviceaccount neuvector -n neuvector

    helm install neuvector --namespace neuvector neuvector/core--set registry=docker.io--set

    tag=5.0.0-preview.1 --set=controller.image.repository=neuvector/controller.preview --

    set=enforcer.image.repository=neuvector/enforcer.preview --set

    manager.image.repository=neuvector/manager.preview --set

    cve.scanner.image.repository=neuvector/scanner.preview --set cve.updater.image.repository=neuvector/updater.preview

    NAME: my-release

    LAST DEPLOYED: Wed Jan 19 21:04:03 2022

    NAMESPACE: neuvector

    STATUS: deployed

    REVISION: 1

    TEST SUITE: None

    NOTES:

    Get the NeuVector URL by running these commands:NODE_PORT=$(kubectl get --namespace neuvector -o jsonpath="{.spec.ports[0].nodePort}" services neuvector-service-webui)NODE_IP=$(kubectl get nodes --namespace neuvector -o jsonpath="{.items[0].status.addresses[0].address}")echo https://$NODE_IP:$NODE_PORT

    
    
    Helm-chart 参数查看:
    
    [github.com/neuvector/n…](https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2Fneuvector%2Fneuvector-helm%2Ftree%2Fmaster%2Fcharts%2Fcore "https://github.com/neuvector/neuvector-helm/tree/master/charts/core")
    
    ### 5.2 资源清单部署
    
    #### 5.2.1 安装环境

    软件版本:

    Kubernetes:1.20.14

    Docker:19.03.15

    NeuVector:5.0.0-preview.1

    
    
    #### 5.2.2 开始执行安装
    
    * 创建 namespace

    kubectl create namespace neuvector

    
    
    * 部署 CRD( Kubernetes 1.19+ 版本)

    kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/crd-k8s-1.19.yaml

    
    
    * 部署 CRD(Kubernetes 1.18或更低版本)

    kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/crd-k8s-1.16.yaml

    
    
    * 配置 RBAC

    kubectl create clusterrole neuvector-binding-app --verb=get,list,watch,update --resource=nodes,pods,services,namespaces

    kubectl create clusterrole neuvector-binding-rbac --verb=get,list,watch --resource=rolebindings.rbac.authorization.k8s.io,roles.rbac.authorization.k8s.io,clusterrolebindings.rbac.authorization.k8s.io,clusterroles.rbac.authorization.k8s.io

    kubectl create clusterrolebinding neuvector-binding-app --clusterrole=neuvector-binding-app --serviceaccount=neuvector:default

    kubectl create clusterrolebinding neuvector-binding-rbac --clusterrole=neuvector-binding-rbac --serviceaccount=neuvector:default

    kubectl create clusterrole neuvector-binding-admission --verb=get,list,watch,create,update,delete --resource=validatingwebhookconfigurations,mutatingwebhookconfigurations

    kubectl create clusterrolebinding neuvector-binding-admission --clusterrole=neuvector-binding-admission --serviceaccount=neuvector:default

    kubectl create clusterrole neuvector-binding-customresourcedefinition --verb=watch,create,get --resource=customresourcedefinitions

    kubectl create clusterrolebindingneuvector-binding-customresourcedefinition --clusterrole=neuvector-binding-customresourcedefinition --serviceaccount=neuvector:default

    kubectl create clusterrole neuvector-binding-nvsecurityrules --verb=list,delete --resource=nvsecurityrules,nvclustersecurityrules

    kubectl create clusterrolebinding neuvector-binding-nvsecurityrules --clusterrole=neuvector-binding-nvsecurityrules --serviceaccount=neuvector:default

    kubectl create clusterrolebinding neuvector-binding-view --clusterrole=view --serviceaccount=neuvector:default

    kubectl create rolebinding neuvector-admin --clusterrole=admin --serviceaccount=neuvector:default -n neuvector

    
    
    * 检查是否有以下 RBAC 对象

    kubectl get clusterrolebinding| grep neuvectorkubectl get rolebinding -n neuvector | grep neuvector

    kubectl get clusterrolebinding| grep neuvector

    neuvector-binding-admissionClusterRole/neuvector-binding-admission44hneuvector-binding-appClusterRole/neuvector-binding-app44hneuvector-binding-customresourcedefinition ClusterRole/neuvector-binding-customresourcedefinition 44hneuvector-binding-nvadmissioncontrolsecurityrulesClusterRole/neuvector-binding-nvadmissioncontrolsecurityrules44hneuvector-binding-nvsecurityrulesClusterRole/neuvector-binding-nvsecurityrules44hneuvector-binding-nvwafsecurityrules ClusterRole/neuvector-binding-nvwafsecurityrules 44hneuvector-binding-rbac ClusterRole/neuvector-binding-rbac 44hneuvector-binding-view ClusterRole/view 44h

    
     

    kubectl get rolebinding -n neuvector | grep neuvectorneuvector-admin ClusterRole/admin44hneuvector-binding-psp Role/neuvector-binding-psp 44h

    
    
    * 部署 NeuVector* 底层 Runtime 为 Docker

    kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/neuvector-docker-k8s.yaml

    
    
    底层 Runtime 为 Containerd(对于 k3s 和 rke2 可以使用此 yaml 文件)

    kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/neuvector-containerd-k8s.yaml

    
    
    1.21 以下的 Kubernetes 版本会提示以下错误,将 yaml 文件下载将 batch/v1 修改为 batch/v1beta1

    error: unable to recognize "https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/neuvector-docker-k8s.yaml": no matches for kind "CronJob" in version "batch/v1"

    
    
    1.20.x cronjob 还处于 beta 阶段,1.21 版本开始 cronjob 才正式 GA 。
    
    默认部署web-ui使用的是loadblance类型的Service,为了方便访问修改为NodePort,也可以通过 Ingress 对外提供服务

    kubectl patchsvc neuvector-service-webui-n neuvector --type='json' -p '[{"op":"replace","path":"/spec/type","value":"NodePort"},{"op":"add","path":"/spec/ports/0/nodePort","value":30888}]'

    
    
    访问 https://node\_ip:30888
    
    默认密码为 admin/admin
    
    #### 5.2.3 访问
    
    由于我采用minikube部署,临时菜哟哦那个port-forward访问测试。

    kubectl port-forward --address 0.0.0.0 -n neuvector service/neuvector-service-webui 22222:8443

    
     
      • Kubernetes部署```
1. 前言    Kubernetes作为Docker生态圈中重要一员,是Google多年大规模容器管理技术的开源版本,是产线实践经验的最佳表现 。如Urs Hölzle所说,无论是公有云还是私有云甚至混合云,Kubernetes将作为一个为任何应用,任何环境的容器管理框架无处不在。正因为如此, 目前受到各大巨头及初创公司的青睐,如Microsoft、VMWare、Red Hat、CoreOS、Mesos等,纷纷加入给Kubernetes贡献代码。随着Kubernetes社区及各大厂商的不断改进、发展,Kuberentes将成为容器管理领域的领导者。    接下来我们会用一系列文章逐一探索Kubernetes是什么、能做什么以及怎么做。2. 什么是Kubernetes    Kubernetes是Google开源容器集群管理系统,其提供应用部署、维护、 扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容器化的应用,其主要功能如下:1) 使用Docker对应用程序包装(package)、实例化(instantiate)、运行(run)。2) 以集群的方式运行、管理跨机器的容器。3) 解决Docker跨机器容器之间的通讯问题。4) Kubernetes的自我修复机制使得容器集群总是运行在用户期望的状态。当前Kubernetes支持GCE、vShpere、CoreOS、OpenShift、Azure等平台,除此之外,也可以直接运行在物理机上。接下来本文主要从以下几方面阐述Kubernetes:1) Kubernetes的主要概念。2) Kubernetes的构件,包括Master组件、Kubelet、Proxy的详细介绍。3. Kubernetes主要概念3.1. Pods    Pod是Kubernetes的基本操作单元,把相关的一个或多个容器构成一个Pod,通常Pod里的容器运行相同的应用。Pod包含的容器运行在同一个Minion(Host)上,看作一个统一管理单元,共享相同的volumes和network namespace/IP和Port空间。3.2. Services    Services也是Kubernetes的基本操作单元,是真实应用服务的抽象,每一个服务后面都有很多对应的容器来支持,通过Proxy的port和服务selector决定服务请求传递给后端提供服务的容器,对外表现为一个单一访问接口,外部不需要了解后端如何运行,这给扩展或维护后端带来很大的好处。3.3. Replication Controllers    Replication Controller确保任何时候Kubernetes集群中有指定数量的pod副本(replicas)在运行, 如果少于指定数量的pod副本(replicas),Replication Controller会启动新的Container,反之会杀死多余的以保证数量不变。Replication Controller使用预先定义的pod模板创建pods,一旦创建成功,pod 模板和创建的pods没有任何关联,可以修改pod 模板而不会对已创建pods有任何影响,也可以直接更新通过Replication Controller创建的pods。对于利用pod 模板创建的pods,Replication Controller根据label selector来关联,通过修改pods的label可以删除对应的pods。Replication Controller主要有如下用法:1) Rescheduling如上所述,Replication Controller会确保Kubernetes集群中指定的pod副本(replicas)在运行, 即使在节点出错时。2) Scaling通过修改Replication Controller的副本(replicas)数量来水平扩展或者缩小运行的pods。3) Rolling updatesReplication Controller的设计原则使得可以一个一个地替换pods来rolling updates服务。4) Multiple release tracks如果需要在系统中运行multiple release的服务,Replication Controller使用labels来区分multiple release tracks。3.4. Labels    Labels是用于区分Pod、Service、Replication Controller的key/value键值对,Pod、Service、 Replication Controller可以有多个label,但是每个label的key只能对应一个value。Labe
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力的Kiko君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值