证书
密钥
创建证书,密钥
Secret保存密钥信息,部署pod时把secret挂载到pod
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=nginxsvc/0=nginxsvc"
解析:
Req:生成证书文件的情况
-x509:生成-x509自签名的证书
-sha256:表示使用sha-256算法
-nodes:表示生成的密钥不加密
-days 365:证书有效期是365天
-newkey rsa:2048 :RSA的密钥对,长度为2048位
-keyout tls.key -out tls.crt :密钥文件key,证书文件crt
-subj "/CN=nginxsvc/0=nginxsvc" :CN common name O: organization
加密
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=nginxsvc/0=nginxsvc"
kubectl create secret tls tls-secret --key tls.key --cert tls.crt
mkdir /opt/https
映射
访问测试
负载均衡测试
可以实现轮询:
浏览器访问:
生成auth认证
创建通用加密模版
创建一个新的ingress配置文件,让其是需要认证的
映射
浏览器访问
Nginx的重定向,nginx的重定向
访问测试,实现跳转
Nginx-ingress-controller介绍到此结束
Traefik是一个为让部署微服务更加快捷的http的反向代理负载均衡
Traefik设计时就能够实时的和k8s api交互,感知后端service以及pod的变化,可以自动更新配置和重载
Traefik的部署方式:
Daemonset
Deployment
Daemonset的特点:
优点:每个节点都会部署一个traffic,节点感知,可以自动更新发现,更新容器的配置,不需要手动重载
缺点:资源占用,大型集群当中,daemonset可能会运行多个trafik的实例,尤其是节点上不需要大容量的运行的情况下,没有办法进行扩缩容
部署对外集群:对外的业务会经常变更,daemonset可以更好的,自动发现服务配置变更
Deployment的特点:
优点:集中办公控制,可以使用少量的实例来运行处理这个集群的流量,更容易升级和维护
缺点:deployment的负载均衡不会均分到每个节点,手动更新,它无法感知到容器内部的变化,
部署对内集群对内相对稳定,更新和变化比较少,适合部署deployment
Traffic-tye:internal 对内服务
Traffic-type:external 对外服务
两者的区别:
Nginx-ingress:相对较慢
Trafik-ingress:自动更新和重载,更方便
工作原理都一样,都是七层代理,都可以动态的更新配置,都可以自动发现服务
Trafik-ingress的并发能力,只有Nginx-ingress的60%
我们基本上用的都是nginx-ingress-controller
今天我们就演示deployment
今日作业:演示daemonset,以及配置更新后自动更新重载
样板文件:
wget https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/traefik-deployment.yaml
wget https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/traefik-rbac.yaml
wget https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/traefik-ds.yaml (daemonset)
wget https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/ui.yaml
下载全部执行
注意执行的先后顺序
查看UI界面:
20.0.0.71::31173
页面会立马生成一个traefik
映射
访问测试
自动发现:(改变副本数即可,然后去浏览器查看)
页面查看
Nginx-ingress-controller
Deployment+loadbalancer:公有云负载均衡的公网复制
Daemonset+hostnetwork+nodeselector:和节点服务共享网络,一个节点一个controller pod,使用宿主机的端口性能最好,适合大并发
Deployment+NodePort:最常见得,最常用,简单的方法,但是性能不太好,多了一层NAT地址转发
Traefik-ingress-controller:
Daemonset:对外,可以自动更新容器的配置host节点网络
Deployment:对内,无法自动更新配置
https:
加密方式:
主要命令:
重定向:
在ingrss文件当中声明的url都会跳转到这个地址