十三、kubernetes详细介绍
来源:互联网 发布:淘宝上有卖大便的妈 编辑:程序博客网 时间:2024/06/05 05:21
一、kubernetes的介绍
什么是Kubernetes?
Kubernetes是一个开源平台,用于跨主机群集自动部署,扩展和操作应用程序容器,提供以容器为中心的基础架构。
使用Kubernetes,您可以快速高效地响应客户需求:
快速,可预测地部署应用程序。 在运行中扩展应用程序。 无缝推出新功能。 仅使用您需要的资源来优化硬件的使用。
我们的目标是建立一个组件和工具的生态系统,以减轻在公共云和私有云中运行应用程序的负担。
Kubernetes是:
Kubernetes是Google开源的容器集群管理系统,实现基于Docker构建容器,利用Kubernetes能很方面管理多台Docker主机中的容器。
主要功能如下:
1)将多台Docker主机抽象为一个资源,以集群方式管理容器,包括任务调度、资源管理、弹性伸缩、滚动升级等功能。
2)使用编排系统(YAML File)快速构建容器集群,提供负载均衡,解决容器直接关联及通信问题
3)自动管理和修复容器,简单说,比如创建一个集群,里面有十个容器,如果某个容器异常关闭,那么,会尝试重启或重新分配容器,始终保证会有十个容器在运行,反而杀死多余的。
kubernetes角色组成:
1)Pod
Pod是kubernetes的最小操作单元,一个Pod可以由一个或多个容器组成;
创建
kubectl create -f xxx.yaml
查询
kubectl get pod yourPodName
kubectl describe pod yourPodName
删除
kubectl delete pod yourPodName
更新
kubectl replace /path/to/yourNewYaml.yaml
同一个Pod只能运行在同一个主机上,共享相同的volumes、network、namespace;
2)ReplicationController(RC)
RC用来管理Pod,一个RC可以由一个或多个Pod组成,在RC被创建后,系统会根据定义好的副本数来创建Pod数量。在运行过程中,如果Pod数量小于定义的,就会重启停止的或重新分配Pod,反之则杀死多余的。当然,也可以动态伸缩运行的Pods规模。
RC通过label关联对应的Pods,在滚动升级中,RC采用一个一个替换要更新的整个Pods中的Pod。
3)Service
Service定义了一个Pod逻辑集合的抽象资源,Pod集合中的容器提供相同的功能。集合根据定义的Label和selector完成,当创建一个Service后,会分配一个Cluster IP,这个IP与定义的端口提供这个集合一个统一的访问接口,并且实现负载均衡。
4)Label
Label是用于区分Pod、Service、RC的key/value键值对;
Pod、Service、RC可以有多个label,但是每个label的key只能对应一个;
主要是将Service的请求通过lable转发给后端提供服务的Pod集合;
kubernetes组件组成:
1)kubectl
客户端命令行工具,将接受的命令格式化后发送给kube-apiserver,作为整个系统的操作入口。 Kubectl命令行管理对象
2)kube-apiserver
作为整个系统的控制入口,以REST API服务提供接口。
3)kube-controller-manager
用来执行整个系统中的后台任务,包括节点状态状况、Pod个数、Pods和Service的关联等。
4)kube-scheduler
负责节点资源管理,接受来自kube-apiserver创建Pods任务,并分配到某个节点。
5)etcd
负责节点间的服务发现和配置共享。
6)kube-proxy
运行在每个计算节点上,负责Pod网络代理。定时从etcd获取到service信息来做相应的策略。
7)kubelet
运行在每个计算节点上,作为agent,接受分配该节点的Pods任务及管理容器,周期性获取容器状态,反馈给kube-apiserver。
8)DNS
一个可选的DNS服务,用于为每个Service对象创建DNS记录,这样所有的Pod就可以通过DNS访问服务了。
Plus:在kubernetes集群中 主节点依然称为master
二、基于上一篇构建的1-master-1-node_K8S集群的使用
查看镜像节点 kubectl describe nodes docker-node1 minion
查看pod日志 kubectl describe pods $podes_name 经常用这个来看pods没有起来的原因
接下来开始踩坑。
what?
No.1 创建了一个yml文件 并想通过这个yml来构建pod , 失败
Error from server (ServerTimeout): error when creating "command_pod.yaml": No API token found for service account "default", retry after the token is automatically created and added to the service account
why?
原因:kubernetes api认证不通过
how?
要解决有两种途径:
1.跳过:
编辑/etc/kubernetes/apiserver 去除 KUBE_ADMISSION_CONTROL中的SecurityContextDeny,ServiceAccount,并重启kube-apiserver.service服务:#vim /etc/kubernetes/apiserverKUBE_ADMISSION_CONTROL="--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota"#systemctl restart kube-apiserver.service之后重新创建pod
2.认证
To get your setup working, you can do the same thing local-up-cluster.sh is doing:Generate a signing key: openssl genrsa -out /tmp/serviceaccount.key 2048Update /etc/kubernetes/apiserver: K**UBE_API_ARGS=”–service_account_key_file=/tmp/serviceaccount.key”Update /etc/kubernetes/controller-manager: KUBE_CONTROLLER_MANAGER_ARGS=”–service_account_private_key_file=/tmp/serviceaccount.key”From https://github.com/kubernetes/kubernetes/issues/11355#issuecomment-127378691 ```**what?**no.2创建pod时候命令执行成功 pod创建失败 **why?** $kubectl describe pods找到了原因:Error syncing pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "image pull failed for gcr.io/google_containers/pause-amd64:3.0, this may be because there are no credentials on this request. details: (Get https://gcr.io/v1/_ping: dial tcp 108.177.97.82:443: getsockopt: connection refused)"是因为被墙了,从google源拉不到镜像。**how?**1.服务器翻墙2.搭建本地的docker-repository 然后把kubelet的地址指向这里KUBELET_POD_INFRA_CONTAINER 这个参数后面接的地址运行第一个副本集 apiVersion: v1kind: ReplicationControllermetadata: name: nginx-controllerspec: replicas: 2 #副本数 selector: name: nginx template: #模板类 metadata: labels: name: nginx #唯一标签 spec: containers: #容器设置 - name: nginx image: docker.io/nginx imagePullPolicy: IfNotPresent ports: - containerPort: 80~ -- 同级的还可以对资源进行限制 ~ ~
“`
- 十三、kubernetes详细介绍
- docker kubernetes dashboard安装部署详细介绍
- Kubernetes介绍
- Kubernetes 介绍
- Kubernetes 大体介绍
- kubernetes基础组件介绍
- kubernetes 概念介绍
- kubernetes 概念介绍二
- Kubernetes架构介绍
- Kubernetes ReplicaSet 和 HPA 介绍
- kubernetes容器编排系统介绍
- kubernetes容器编排系统介绍
- Docker系列(八)Kubernetes介绍
- Kubernetes Events介绍(下)
- Kubernetes 1.2 新功能介绍:Deployment
- Kubernetes Events介绍(中)
- Kubernetes Events介绍(下)
- Kubernetes ReplicaSet 和 HPA 介绍
- 通达OA对接企业微信与钉钉 设置
- android 终端运行 vim / vi 命令执行失败 busybox解决之
- isBlank与isEmpty的区别
- Tomcat NioEndpoint的Poller和PollerEvent
- 排序
- 十三、kubernetes详细介绍
- Leetcode 算法习题 第十五周
- 栈与队列-单调栈,单调队列
- NodeJS对异常的处理
- JAVA重启自身程序
- WebRTC学习资料大全
- MFC 为按钮添加图片
- 报表在linux上打印问题
- 【TOMCAT】windows7下tomcat6环境部署