2019-07 <Docker容器> 第十五、十六章 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://<master_IP>:8080"            -->设置master的apiserver的位置

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

            docker

                    用途:直接管理容器


容器编排的机制

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

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

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


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

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

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


附: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     对象资源的类型在文件里定义着


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容