服务程序文件

文件名 说明
hyperkube 总控程序,用于运行其他 Kubernetes程序
kube-apiserver apiserver主程序
kube-apiserver.docker_tag apiserver docker镜像的tag
kube-apiserver.tar apiserver docker镜像文件
kube-controller-manager controller-manager主程序
kube-controller-manager.docker_tag controller-manager docker 镜像的tag
kube-controller-manager.tar controller-manager docker镜像文件
kubectl 客户端命令行工具
kubelet kubelet主程序
kube-proxy proxy主程序
kube-scheduler scheduler主程序
kube-scheduler.docker_tag scheduler docker镜像的tag
kube-scheduler.tar scheduler docker镜像文件

Kubernetes Master节点安装部署etcd、kube-apiserver.kube-controller-manager、kube-scheduler服务进程.我们使用kubectl作为客户端与Master进行交互操作,在工作Node上仅需部署kubelet和 kube-proxy 服务进程。Kubernetes还提供了一个“all-in-one”的 hyperkube程序来完成对以上服务程序的启动。

常用组件

Kind

常用kind

Deployment
Pod
Service

查看所有kind

kubectl api-resources -o wide --namespaced=true

Config

查看当前配置信息

kubectl config view

Pod

创建Pod

kubectl run nginx --image=nginx --port=80

查看pod状态

kubectl get pod

查看pod创建信息

kubectl describe pod nginx

ReplicationController 与 Replica Set

简称RC,通过RC确认任意时刻Pod的副本数量都在某个预期值,Replica Set是RC的升级版,很少单独使用Replica Set,它主要被Deployment 这个更高层的资源对象所使用,从而形成一整套Pod创建、删除、更新的编排机制。

创建一个rc

kubectl scale rc redis-slave --replicas=3

查看状态

kubectl get rs

Deployment

RC的升级版,有了Deployment可以忽略RC了

创建Deployment

kubectl create deployment nginx --image=nginx
kubectl create -f nginx.yaml

查看deployment状态

kubectl get deployment

查看运行详情

kubectl describe deployments

删除资源

kubectl delete pods,services -l name=<label-name>
kubectl delete pods --all // 删除所有pod

horizontal pod autoscaler(HPA)

HPA和RC与Deployment一样,可以横向扩容,特殊的是HPA可以根据当前Pod的负载情况来动态调整目标Pod的副本数.

HPA可以根据以下两种方式作为Pod的负载指标:

  • CPUUtilizationPercentage
  • 自定义指标,如TPS\QPS等 kubectl autoscale deployment php-apache --cpu-percent=90 --min=1 --max=10

自动扩容当CPU使用率达到90%时,最小创建1个,最多创建10个Pod

Service

创建一个service 的yaml文件

apiVersion: v1
kind: Servvice
metadata:
	name: nginx
spec:
	ports:
	- port: 8080
	selector:
	tier: frontend

通过yaml文件创建一个服务

kubectl create -f nginx.yaml

通过expose可以将资源公开为服务

kubectl expose deployment nginx --port=80 --type=LoadBalancer

查看服务

kubectl describe service nginx

查看服务节点:

kubectl get endpoints

查看集群IP

kubectl get svc <服务名> -o yaml

Namespace

通过namespaces实现多租户的资源隔离

查看集群namespaces

kubectl get namespaces

如果不指定namespace,所有创建的Pod,RC,Service都会创建在default的namespance中

通过yaml文件可以创建一个namespace

apiVersion: v1
kind: Namespace
metadata:
	name:development

创建后,就要以在Pod\RC\Deployment\Service中指定namespace

apiVersion: v1
kind: Pod
metadata:
	name: busybox
	namespace: development

查看资源时,可以指定查看哪个namespace

kubectl get pods --namespace=development