Update 第三章——k8s集群.md

This commit is contained in:
benjas 2020-04-19 13:41:05 +08:00
parent 811bda3ff4
commit a742124998

View File

@ -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 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将标准输入控制台作为容器的控制台输入 > - -t将标准输入控制台作为容器的控制台输入
> - -i将控制台输入发送到容器 > - -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 get all -n kube-public -o wide
~~~ ~~~
> **kubectl expose**暴露端口,后面的--port=80 指的是暴露80端口 > **kubectl expose**暴露端口,后面的--port=80 指的是暴露80端口
![1579077073962](assets/1579077073962.png) ![1579077073962](assets/1579077073962.png)
@ -161,9 +161,9 @@ spec:
### 安装部署flanneld ### 安装部署flanneld
> **WHAT**通过给每台宿主机分配一个子网的方式为容器提供虚拟网络(覆盖网络),该网络中的结点可以看作通过虚拟或逻辑链路而连接起来的 > **WHAT**通过给每台宿主机分配一个子网的方式为容器提供虚拟网络(覆盖网络),该网络中的结点可以看作通过虚拟或逻辑链路而连接起来的
> >
> **WHY**我们生产上的集群宿主机/容器之间必须是互通的,因为只有互通才能形成集群,要是集群间的宿主机和容器都不互通,那就没有做集群的必要了 > **WHY**我们生产上的集群宿主机/容器之间必须是互通的,因为只有互通才能形成集群,要是集群间的宿主机和容器都不互通,那就没有做集群的必要了
~~~ ~~~
# 你可以做如下尝试21机器 # 你可以做如下尝试21机器
@ -271,9 +271,9 @@ flannel原理添加静态路由前提条件必须处在同一网关之
### flannel之SNAT规则优化 ### flannel之SNAT规则优化
> **WHAT**使得容器之间的透明访问 > **WHAT**使得容器之间的透明访问
> >
> **WHY**解决两宿主机容器之间的透明访问如不进行优化容器之间的访问日志记录为宿主机的IP地址 > **WHY**解决两宿主机容器之间的透明访问如不进行优化容器之间的访问日志记录为宿主机的IP地址
~~~ ~~~
# 把nginx:curl拉下来21机器 # 把nginx:curl拉下来21机器
@ -315,7 +315,7 @@ etcd]# kubectl get pods -o wide
etcd]# kubectl logs -f nginx-ds-drrkt etcd]# kubectl logs -f nginx-ds-drrkt
~~~ ~~~
> **kubectl logs -f**查看Pod日志 > **kubectl logs -f**查看Pod日志
![1579154925882](assets/1579154925882.png) ![1579154925882](assets/1579154925882.png)
@ -333,10 +333,10 @@ etcd]# kubectl logs -f nginx-ds-drrkt
> **iptables** > **iptables**
> >
> - `语法iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]` > - `语法iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]`
> - **-A**在规则链的末尾加入新规则 > - **-A**在规则链的末尾加入新规则
> - **-s**匹配来源地址IP/MASK加叹号"!"表示除这个IP外 > - **-s**匹配来源地址IP/MASK加叹号"!"表示除这个IP外
> - **-o**匹配从这块网卡流出的数据 > - **-o**匹配从这块网卡流出的数据
> - **MASQUERADE**动态伪装能够自动的寻找外网地址并改为当前正确的外网IP地址 > - **MASQUERADE**动态伪装能够自动的寻找外网地址并改为当前正确的外网IP地址
> - 上面红框内的可以理解为如果是172.7.21.0/24段的docker的ip网络发包不从docker0桥设备出战的就进行SNAT转换而我们需要的是如果出网的地址是172.7.21.0/24或者172.7.0.0/16网络这是docker的大网络就不要做源地址NAT转换因为我们集群内部需要坦诚相见自己人不需要伪装。 > - 上面红框内的可以理解为如果是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服务发现 ### 安装部署coredns服务发现
> **WHAT**服务(应用)之间相互定位的过程 > **WHAT**服务(应用)之间相互定位的过程
> >
> **WHY** > **WHY**
> >
@ -439,7 +439,7 @@ k8s-yaml A 10.4.7.200
# out10.4.7.200 # out10.4.7.200
~~~ ~~~
> **dig -t A**指的是找DNS里标记为A的相关记录@用什么机器IP访问+short是只返回IP > **dig -t A**指的是找DNS里标记为A的相关记录@用什么机器IP访问+short是只返回IP
![1579158143760](assets/1579158143760.png) ![1579158143760](assets/1579158143760.png)
@ -464,7 +464,7 @@ k8s-yaml]# docker push !$
> 这里我们需要注意的是任何我用到的镜像都会推到我的本地私有仓库原因前面也说了1、是为了用的时候速度快保证不出现网络问题2、保证版本是同样的版本而不是突然被别人修改了 > 这里我们需要注意的是任何我用到的镜像都会推到我的本地私有仓库原因前面也说了1、是为了用的时候速度快保证不出现网络问题2、保证版本是同样的版本而不是突然被别人修改了
> >
> **docker push !$**push上一个镜像的名字 > **docker push !$**push上一个镜像的名字
~~~ ~~~
# 200机器准备资源配置清单 # 200机器准备资源配置清单
@ -633,7 +633,7 @@ spec:
![1579159195207](assets/1579159195207.png) ![1579159195207](assets/1579159195207.png)
> **CLUSTER-IP为什么是192.168.0.2**因为我们之前已经写死了这是我们dns的统一接入点 > **CLUSTER-IP为什么是192.168.0.2**因为我们之前已经写死了这是我们dns的统一接入点
> >
> ![1582278638665](assets/1582278638665.png) > ![1582278638665](assets/1582278638665.png)
@ -646,7 +646,7 @@ spec:
# out192.168.81.37 # out192.168.81.37
~~~ ~~~
> **dig -t A**指的是找DNS里标记为A的相关记录@用什么机器IP访问+short是只返回IP > **dig -t A**指的是找DNS里标记为A的相关记录@用什么机器IP访问+short是只返回IP
![1579161063657](assets/1579161063657.png) ![1579161063657](assets/1579161063657.png)
@ -656,12 +656,12 @@ spec:
### K8S的服务暴露ingress ### K8S的服务暴露ingress
> **WHAT**K8S API的标准资源类型之一也是核心资源它是基于域名和URL路径把用户的请求转发至指定Service资源的规则 > **WHAT**K8S API的标准资源类型之一也是核心资源它是基于域名和URL路径把用户的请求转发至指定Service资源的规则
> >
> - 将集群外部的请求流量,转发至集群内部,从而实现“服务暴露” > - 将集群外部的请求流量,转发至集群内部,从而实现“服务暴露”
> - nginx + go脚本 > - nginx + go脚本
> >
> **WHY**上面实现了服务在集群“内”被自动发现,那么需要使得服务在集群“外”被使用和访问,常规的两种方法: > **WHY**上面实现了服务在集群“内”被自动发现,那么需要使得服务在集群“外”被使用和访问,常规的两种方法:
> >
> - 使用NodePort型的service > - 使用NodePort型的service
> - 无法使用kube-proxy的ipvs模型只能使用iptables模型 > - 无法使用kube-proxy的ipvs模型只能使用iptables模型
@ -670,9 +670,9 @@ spec:
##### 以trafiker为例 ##### 以trafiker为例
> **WHAT**为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。 > **WHAT**为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。
> >
> **WHY**可以监听你的服务发现/基础架构组件的管理API并且每当你的微服务被添加、移除、杀死或更新都会被感知并且可以自动生成它们的配置文件 > **WHY**可以监听你的服务发现/基础架构组件的管理API并且每当你的微服务被添加、移除、杀死或更新都会被感知并且可以自动生成它们的配置文件
~~~ ~~~
# 200机器部署traefikeringress控制器 # 200机器部署traefikeringress控制器
@ -861,9 +861,9 @@ traefik A 10.4.7.10
~]# systemctl restart named ~]# systemctl restart named
~~~ ~~~
> **nginx -t**检查nginx.conf文件有没有语法错误 > **nginx -t**检查nginx.conf文件有没有语法错误
> >
> **nginx -s reload**不需要重启nginx的热配置 > **nginx -s reload**不需要重启nginx的热配置
![1579167500955](assets/1579167500955.png) ![1579167500955](assets/1579167500955.png)
@ -883,3 +883,5 @@ traefik A 10.4.7.10
接下来我们就要开始安装部署K8S的周边生态使其成为一个**真正的PaaS服务** 接下来我们就要开始安装部署K8S的周边生态使其成为一个**真正的PaaS服务**
<a href="https://github.com/ben1234560/k8s_PaaS/blob/master/%E5%8E%9F%E7%90%86%E5%8F%8A%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90/Kubernetes%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5.md#kubernetes%E6%8A%80%E8%83%BD%E5%9B%BE%E8%B0%B1">kubernetes技能图谱</a>