服务程序文件
文件名 | 说明 |
---|---|
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