From a7421249980ed5673c6a66b318f469b2c6d9cc57 Mon Sep 17 00:00:00 2001 From: benjas <909336740@qq.com> Date: Sun, 19 Apr 2020 13:41:05 +0800 Subject: [PATCH] =?UTF-8?q?Update=20=E7=AC=AC=E4=B8=89=E7=AB=A0=E2=80=94?= =?UTF-8?q?=E2=80=94k8s=E9=9B=86=E7=BE=A4.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 第三章——k8s集群.md | 48 ++++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/第三章——k8s集群.md b/第三章——k8s集群.md index 93ff82f..63c20a1 100644 --- a/第三章——k8s集群.md +++ b/第三章——k8s集群.md @@ -37,9 +37,9 @@ kubectl create deployment nginx-dp --image=harbor.od.com/public/nginx:v1.7.9 -n 21 ~]# kubectl exec -ti nginx-dp-5dfc689474-9zt9r /bin/bash -n kube-public ~~~ -> **kubectl get deploy:**这里的deploy是容器类型,deploy也是deployment +> **kubectl get deploy**:这里的deploy是容器类型,deploy也是deployment > -> **kubectl exec:**进入容器 +> **kubectl exec**:进入容器 > > - -t:将标准输入控制台作为容器的控制台输入 > - -i:将控制台输入发送到容器 @@ -71,7 +71,7 @@ kubectl create deployment nginx-dp --image=harbor.od.com/public/nginx:v1.7.9 -n ~]# kubectl get all -n kube-public -o wide ~~~ -> **kubectl expose:**暴露端口,后面的--port=80 指的是暴露80端口 +> **kubectl expose**:暴露端口,后面的--port=80 指的是暴露80端口 ![1579077073962](assets/1579077073962.png) @@ -161,9 +161,9 @@ spec: ### 安装部署flanneld -> **WHAT:**通过给每台宿主机分配一个子网的方式为容器提供虚拟网络(覆盖网络),该网络中的结点可以看作通过虚拟或逻辑链路而连接起来的 +> **WHAT**:通过给每台宿主机分配一个子网的方式为容器提供虚拟网络(覆盖网络),该网络中的结点可以看作通过虚拟或逻辑链路而连接起来的 > -> **WHY:**我们生产上的集群宿主机/容器之间必须是互通的,因为只有互通才能形成集群,要是集群间的宿主机和容器都不互通,那就没有做集群的必要了 +> **WHY**:我们生产上的集群宿主机/容器之间必须是互通的,因为只有互通才能形成集群,要是集群间的宿主机和容器都不互通,那就没有做集群的必要了 ~~~ # 你可以做如下尝试,21机器: @@ -271,9 +271,9 @@ flannel原理:添加静态路由(前提条件,必须处在同一网关之 ### flannel之SNAT规则优化 -> **WHAT:**使得容器之间的透明访问 +> **WHAT**:使得容器之间的透明访问 > -> **WHY:**解决两宿主机容器之间的透明访问,如不进行优化,容器之间的访问,日志记录为宿主机的IP地址 +> **WHY**:解决两宿主机容器之间的透明访问,如不进行优化,容器之间的访问,日志记录为宿主机的IP地址 ~~~ # 把nginx:curl拉下来,21机器 @@ -315,7 +315,7 @@ etcd]# kubectl get pods -o wide etcd]# kubectl logs -f nginx-ds-drrkt ~~~ -> **kubectl logs -f:**查看Pod日志 +> **kubectl logs -f**:查看Pod日志 ![1579154925882](assets/1579154925882.png) @@ -333,10 +333,10 @@ etcd]# kubectl logs -f nginx-ds-drrkt > **iptables:** > > - `语法:iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]` -> - **-A:**在规则链的末尾加入新规则 -> - **-s:**匹配来源地址IP/MASK,加叹号"!"表示除这个IP外 -> - **-o:**匹配从这块网卡流出的数据 -> - **MASQUERADE:**动态伪装,能够自动的寻找外网地址并改为当前正确的外网IP地址 +> - **-A**:在规则链的末尾加入新规则 +> - **-s**:匹配来源地址IP/MASK,加叹号"!"表示除这个IP外 +> - **-o**:匹配从这块网卡流出的数据 +> - **MASQUERADE**:动态伪装,能够自动的寻找外网地址并改为当前正确的外网IP地址 > - 上面红框内的可以理解为:如果是172.7.21.0/24段的docker的ip,网络发包不从docker0桥设备出战的,就进行SNAT转换,而我们需要的是如果出网的地址是172.7.21.0/24或者172.7.0.0/16网络(这是docker的大网络),就不要做源地址NAT转换,因为我们集群内部需要坦诚相见,自己人不需要伪装。 ~~~ @@ -388,7 +388,7 @@ etcd]# kubectl logs -f nginx-ds-drrkt ### 安装部署coredns(服务发现): -> **WHAT:**服务(应用)之间相互定位的过程 +> **WHAT**:服务(应用)之间相互定位的过程 > > **WHY:** > @@ -439,7 +439,7 @@ k8s-yaml A 10.4.7.200 # out:10.4.7.200 ~~~ -> **dig -t A:**指的是找DNS里标记为A的相关记录,@用什么机器IP访问,+short是只返回IP +> **dig -t A**:指的是找DNS里标记为A的相关记录,@用什么机器IP访问,+short是只返回IP ![1579158143760](assets/1579158143760.png) @@ -464,7 +464,7 @@ k8s-yaml]# docker push !$ > 这里我们需要注意的是,任何我用到的镜像都会推到我的本地私有仓库,原因前面也说了,1、是为了用的时候速度快保证不出现网络问题,2、保证版本是同样的版本,而不是突然被别人修改了 > -> **docker push !$:**push上一个镜像的名字 +> **docker push !$**:push上一个镜像的名字 ~~~ # 200机器,准备资源配置清单: @@ -633,7 +633,7 @@ spec: ![1579159195207](assets/1579159195207.png) -> **CLUSTER-IP为什么是192.168.0.2:**因为我们之前已经写死了这是我们dns的统一接入点 +> **CLUSTER-IP为什么是192.168.0.2**:因为我们之前已经写死了这是我们dns的统一接入点 > > ![1582278638665](assets/1582278638665.png) @@ -646,7 +646,7 @@ spec: # out:192.168.81.37 ~~~ -> **dig -t A:**指的是找DNS里标记为A的相关记录,@用什么机器IP访问,+short是只返回IP +> **dig -t A**:指的是找DNS里标记为A的相关记录,@用什么机器IP访问,+short是只返回IP ![1579161063657](assets/1579161063657.png) @@ -656,12 +656,12 @@ spec: ### K8S的服务暴露ingress -> **WHAT:**K8S API的标准资源类型之一,也是核心资源,它是基于域名和URL路径,把用户的请求转发至指定Service资源的规则 +> **WHAT**:K8S API的标准资源类型之一,也是核心资源,它是基于域名和URL路径,把用户的请求转发至指定Service资源的规则 > > - 将集群外部的请求流量,转发至集群内部,从而实现“服务暴露” > - nginx + go脚本 > -> **WHY:**上面实现了服务在集群“内”被自动发现,那么需要使得服务在集群“外”被使用和访问,常规的两种方法: +> **WHY**:上面实现了服务在集群“内”被自动发现,那么需要使得服务在集群“外”被使用和访问,常规的两种方法: > > - 使用NodePort型的service > - 无法使用kube-proxy的ipvs模型,只能使用iptables模型 @@ -670,9 +670,9 @@ spec: ##### 以trafiker为例 -> **WHAT:**为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。 +> **WHAT**:为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。 > -> **WHY:**可以监听你的服务发现/基础架构组件的管理API,并且每当你的微服务被添加、移除、杀死或更新都会被感知,并且可以自动生成它们的配置文件 +> **WHY**:可以监听你的服务发现/基础架构组件的管理API,并且每当你的微服务被添加、移除、杀死或更新都会被感知,并且可以自动生成它们的配置文件 ~~~ # 200机器,部署traefiker(ingress控制器) @@ -861,9 +861,9 @@ traefik A 10.4.7.10 ~]# systemctl restart named ~~~ -> **nginx -t:**检查nginx.conf文件有没有语法错误 +> **nginx -t**:检查nginx.conf文件有没有语法错误 > -> **nginx -s reload:**不需要重启nginx的热配置 +> **nginx -s reload**:不需要重启nginx的热配置 ![1579167500955](assets/1579167500955.png) @@ -883,3 +883,5 @@ traefik A 10.4.7.10 接下来,我们就要开始安装部署K8S的周边生态,使其成为一个**真正的PaaS服务** +kubernetes技能图谱 +