2019-07 第十五、十六章 K8S容器编排

K8S的三大作为

1. 创建统一API,下对基础设施、上对容器。

使容器开发者,只需知道K8S的版本,就可以使其开发的容器运行在任何支持API的云、物理机池上

2. 编排服务

实现了一服务(ip+port)一容器(pod)、服务(容器)连接、服务(容器)追踪(因为K8S知道IP+port)、容器再生和扩展。

3. 人和devops

软件安装配置的功作从系统管理员转移到容器开发者。

K8S的组件

无论master还是nodes上,都要在/etc/kubernetes/conifg里,指明master的位置:    

        KUBE_MASTER="--master=http://master_IP:8080"

master    一切管理控制在这,通过kubectl命令。安装软件: kubernetes-master, etcd

    依赖服务:

            etcd:  

                    用途:保存集群配置,默认保存在/var/lib/etcd/; 检视所有组件变化并反应

                    配置文件:/etc/etcd/etcd.conf

                        ETCD_NAME=default

                        ETCD_DATA_DIR="/var/lib/etcd"                                                    -->ETCD数据存储目录

                        ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"                    -->监听本地所有IP,监听etcd端口是2379

                        ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"

                        ETCD_LISTEN_PEER_URLS="http://localhost:2380"

                    手动配置: etcdctl set xxx/xxx/xxx < X.json

            kube-apiserver:

                    用途:node与etcd的沟通通道,REST操作处理

                    配置文件:/etc/kubernetes/apiserver

                        KUBE_API_ADDRESS="--address=0.0.0.0"                                

                        KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379"        -->设置master的etcd的位置,这是node要通信的最终target

                        KUBE_SERVICE_ADDRESSES="--portal_net=10.254.0.0/16"            -->集群内部地址范围

                        KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota"        -->去掉了ServiceAccount值

            kube-controller-manager

                    用途:发现和监控node,创建和更新endpoint controller

            kube-scheduler

                    用途:将pod调度到可用的node上

node    就是跑容器的labor。要么和master一体,要么至少两个。安装软件: kubernetes-node, docker

    依赖服务:

            kube-proxy

                    用途:控制着容器的endpoint,实现负载均衡和网络代理

            kubelet

                    用途: 管理pods;与master的kube-apiserver通信

                    配置文件:/etc/kubernetes/kubelet

                        KUBELET_ADDRESS="--address=0.0.0.0"        

                        KUBELET_API_SERVER="--api-servers=http://:8080"            -->设置master的apiserver的位置

                        KUBELET_ARGS="--register-node=true"                                                    -->注册自己为master的node

            docker

                    用途:直接管理容器


容器编排的机制

1. K8S对pod(容器的副本)的控制载体叫“复制控制器”RC。

    RC的创建、删除, 实现了pod(容器)的创建、删除、再生、数量控制。

    所以,RC的定义,必须指定replicas(容器的副本数目),容器的spec,对应服务的selectorname


2019-07 <Docker容器> 第十五、十六章 K8S容器编排_第1张图片

2. K8S对pod(容器)的连接的机制叫“service”和selectorname。

    service的存在在pod的创建之前、删除之后。

    service的定义,必须指定port,如果下游是是end user,还需要指定public IP


2019-07 <Docker容器> 第十五、十六章 K8S容器编排_第2张图片

附:Kubectl命令列表

kubectl run(创建容器镜像)

kubectl expose(将资源暴露为新的 Service)

kubectl annotate(更新资源的Annotations信息)

kubectl autoscale(Pod水平自动伸缩)

kubectl convert(转换配置文件为不同的API版本)

kubectl create(创建一个集群资源对象

kubectl create clusterrole(创建ClusterRole)

kubectl create clusterrolebinding(为特定的ClusterRole创建ClusterRoleBinding)

kubectl create configmap(创建configmap)

kubectl create deployment(创建deployment)

kubectl create namespace(创建namespace)

kubectl create poddisruptionbudget(创建poddisruptionbudget)

kubectl create quota(创建resourcequota)

kubectl create role(创建role)

kubectl create rolebinding(为特定Role或ClusterRole创建RoleBinding)

kubectl create service(使用指定的子命令创建 Service服务)

kubectl create service clusterip

kubectl create service externalname

kubectl create service loadbalancer

kubectl create service nodeport

kubectl create serviceaccount

kubectl create secret(使用指定的子命令创建 secret)

kubectl create secret tls

kubectl create secret generic

kubectl create secret docker-registry

kubectl delete(删除资源对象)

kubectl edit(编辑服务器上定义的资源对象)

kubectl get(获取资源信息)

kubectl label(更新资源对象的label)

kubectl patch(使用patch更新资源对象字段)

kubectl replace(替换资源对象)

kubectl rolling-update(使用RC进行滚动更新)

kubectl scale(扩缩Pod数量)

kubectl rollout(对资源对象进行管理)

kubectl rollout history(查看历史版本)

kubectl rollout pause(标记资源对象为暂停状态)

kubectl rollout resume(恢复已暂停资源)

kubectl rollout status(查看资源状态)

kubectl rollout undo(回滚版本)

kubectl set(配置应用资源)

kubectl set resources(指定Pod的计算资源需求)

kubectl set selector(设置资源对象selector)

kubectl set image(更新已有资源对象中的容器镜像)

kubectl set subject(更新RoleBinding / ClusterRoleBinding中User、Group 或 ServiceAccount)

例如 , 创建pod:

kubectl create -f xxx.json     对象资源的类型在文件里定义着


2019-07 <Docker容器> 第十五、十六章 K8S容器编排_第3张图片

你可能感兴趣的:(2019-07 第十五、十六章 K8S容器编排)