Blog

从集群外部访问Kubernetes Service

2017-01-17
Kubernetes

Kubernetes通过Service资源在Kubernetes集群内针对容器实现了服务发现和负载均衡。 如果服务要暴露到集群外部,从集群外部访问服务,需要借助一些集群外部提供的负载均衡策略。

先来看一下Kubernetes Service的类型:

Kubernetes Service类型 #

  • ClusterIp:默认类型,自动分配集群内部可以访问的虚拟IP, ClusterIp
  • NodePort:基于ClusterIp提供的功能,为Service在Kubernetes集群的每个Node上绑定一个端口,即NodePort,集群外部可基于任何一个NodeIP:NodePort的形式来访问Service。Service在每个Node的NodePort端口上都可用。
  • LoadBalancer:基于NodePort提供的功能,借助云服务供应商提供的外部负载均衡器,将请求转发到各个NodeIp:NodePort。只有特定的云服务商和GCE(Google Container Engine)支持该方案。

Service提供的负载均衡功能,但在使用上有以下限制:

...

在Kubernetes上运行SonarQube

2017-01-17
Kubernetes, Sonarqube

文本描述如何在Kubernetes上运行一个Sonarqube和MySQL。

准备 #

kubernetes集群构成如下,这里是单机的试验环境。

1kubectl get nodes
2NAME      STATUS         AGE
3cent0     Ready,master   1h

mysql的pod #

mysql-rc.yaml

 1apiVersion: v1
 2kind: ReplicationController            
 3metadata:
 4  name: mysql                          
 5spec:
 6  replicas: 1                          
 7  selector:
 8    app: mysql                          
 9  template:
10    metadata:
11      labels:
12        app: mysql                      
13    spec:
14      containers:                       
15      - name: mysql                     
16        image: mysql:5.7                
17        ports:
18        - containerPort: 3306           
19        env:
20        - name: MYSQL_ROOT_PASSWORD
21          value: "123456"
22        - name: MYSQL_DATABASE
23          value: sonardb
24        - name: MYSQL_USER
25          value: sonar
26        - name: MYSQL_PASSWORD
27          value: sonar

创建RC

...

Kubernetes Pod容量伸缩

2017-01-16
Kubernetes

服务的伸缩性 #

伸缩性是指系统可以根据需求和成本调整自身处理能力的一种能力,构建可伸缩的服务有可能要求服务的处理能力在数天内扩大数倍,又需要在数天后将处理能力还原回去。

在Kubernetes集群中我们可以通过Replication Controller的scale机制完成服务的扩容或缩容,实现具有伸缩性的服务。

...

Kubernetes资源对象之ConfigMap

2017-01-16
Kubernetes

在大规模分布式系统中有一个分布式配置管理中心的组件,将分布式应用所需的配置信息与程序进行分离,极大简化配置管理的工作。如360的QConf,百度的Disconf。 在大规模容器集群环境中,容器内应用程序的配置管理十分重要。Kubernetes提供了一种统一的管理方案,即ConfigMap。 Kubernetes使用ConfigMap实现容器应用的配置管理。

...

Kubernetes Pod的Volume:emptyDir和hostPath

2017-01-15
Kubernetes

Volume的类型 #

Volume是Kubernetes Pod中多个容器访问的共享目录。 Volume被定义在Pod上,被这个Pod里的多个容器挂在到相同或不同的路径下。 Volume的生命周期与Pod的生命周期相同,Pod内的容器停止和重启时不会影响Volume中的数据。

...

Kubernetes资源对象之Pod

2017-01-15
Kubernetes

Pod基本概念 #

Pod是Kubernetes集群中最基本的资源对象。每个Pod由一个或多个业务容器和一个根容器(Pause容器)组成。

Kubernetes为每个Pod分配了唯一的IP,即Pod IP,Pod里的多个容器共享这个IP。

1kubectl get pods -o wide --all-namespaces | grep dashboard
2kube-system   kubernetes-dashboard-3109525988-5vnpv   1/1       Running   1          7h        10.244.0.8       cent0

实际上一个Pod内的多个容器共享相同的网络命名空间、IP、端口,也就是说这些容器之间能通过localhost来通信,此外这些容器还可以共享相同存储卷。

...

Kubernetes资源对象之Service

2017-01-15
Kubernetes

Kubernetes Service #

当应用由单体架构转向微服务架构时,应用被拆成很多小的互相协作的微服务,每个服务会以多个副本运行,副本数量会随着系统所需的处理能力进行变化,这就是微服务的伸缩性。 微服务的负载均衡器对实现伸缩性起了十分重要的作用。

Service是Kubernetes最重要的资源对象。Kubernetes中的Service对象可以对应微服务架构中的微服务。Service定义了服务的访问入口,服务的调用者Pod通过这个地址访问Service后端的Pod副本实例。 Service通过Label Selector同后端的Pod副本建立关系,Replication Controller保证后端Pod副本的数量,也就是保证服务的伸缩性。

...

Kubernetes的Master节点和Node节点

2017-01-14
Kubernetes

Master #

Kubernetes集群中的Master节点是集群的控制节点,负责整个集群的管理和控制。针对集群执行的控制命令都是发送给Master节点的。 因为Master节点如此重要,所以Master节点默认是不执行工作负载的。Master节点上运行的主要组件如下:

...

Kubernetes集群监控:Heapster

2017-01-14
Kubernetes

Heapster是Kubernetes集群监控工具。 在以前Kubernetes的Node上会运行cAdvisor作为agent收集本机和容器的资源数据(如:CPU,内存,网络,文件系统等等)。 在新版本的Kubernetes中,cAdvisor被集成到kubelet中。Heapster通过kubelet查看运行在集群中所有节点的资源使用情况。

...

© 2024 青蛙小白