#3 K8S 安装工具

2023-03-21

在 GitHub 搜索到了一些相关项目:

官方

官方文档上介绍的三种安装方式:

其他:

两个废弃项目:

Salt

Puppet

Chef

Ansible

其他

附:常见轻量级 K8S 安装工具比较

k3s
k0s
k3d
minikube
microk8s
kind

参考资料与拓展阅读

#2 K8S:Ingress Controller

2023-03-18

Ingress 入口的意思

K8S 的这套框架下,运行在一个个 Pod 中的应用如何对外提供服务呢?
在容器化之前,我们常用 Nginx 作为代理(路由)和负载均衡,在 K8S 中,Nginx 的这个位置被称之为 Ingress。
支持 K8S Ingress 规范,实现对 Ingress 管理和控制的组件,叫做 Ingress Controller。

除了 Nginx,HAProxy 之外,最常听说的相关项目就是 Traefik 和 Envoy 了。

Envoy

Envoy 是美国打车界的千年老二 Lift 公司 2017 年交给 CNCF 基金会托管的代理服务项目。
PS:2018 年毕业,成为 CNCF 旗下第三个正式项目(前两个分别是 K8S 和 Prometheus)。

Cloud-native high-performance edge/middle/service proxy

Envoy 可以作为服务网格的数据面代理,为微服务应用程序提供负载均衡、流量路由、服务发现、健康检查、故障恢复、追踪和监视等功能。它还可以作为边缘网关或 API 网关,提供安全、流量控制、鉴权、协议转换、请求转换、缓存等功能。

特点:

  1. 使用 Go 语言开发
  2. 支持 HTTP(1,2),gRPC,TCP,WebSocket 协议
  3. 高性能,高并发,高吞吐,低延迟,可拓展
  4. 拓展性:插件式架构,可自定义过滤器、路由规则、负载均衡算法等
  5. CNCF 项目,非常活跃
  6. 支持运行数据采集
  7. 静态配置(YAML / JSON) + 动态配置(xDS 协议,如 ADS、EDS、CDS、RDS 等,gRPC 通信)
  8. Envoy -> 配置服务:建立 gRPC 连接
  9. 配置服务 -> Envoy :Discovery 请求,包含资源类型和版本信息
  10. Envoy -> 配置服务:本地资源信息
  11. 配置服务 -> Envoy :Discovery 响应,最新的资源信息(如集群配置、路由规则、TLS 证书等)。

Traefik

Traefik 是一个专为云原生设计的反向代理和负载均衡器,支持 K8S Ingress 规范。

特点:

  • 支持多种后端(容器编排和服务注册中心)
  • 自动 TLS:生成证书(Let's Encrypt),配置,管理
  • 拓展性:插件式架构,认证,授权,缓存,限流等
  • 都阳台配置

Ingress Controller

基于 Nginx

  • kubernetes/ingress-nginx 官方提供的 Ingress Controller 实现
  • nginxinc/kubernetes-ingress
  • Kong/kubernetes-ingress-controller
  • apache/apisix-ingress-controller

基于 Envoy

  • projectcontour/contour
  • istio/istio
  • emissary-ingress/emissary
  • solo-io/gloo
  • zalando/skipper

基于 HAProxy

  • haproxytech/kubernetes-ingress
  • voyagermesh/voyager
  • jcmoraisjr/haproxy-ingress

Traefik

  • traefik

其他

  • flomesh-io/pipy + flomesh-io/fsm

#1 尝试 K8S(Kubernetes)

2019-10-15

安装

安装 minikube

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && sudo install minikube-linux-amd64 /usr/local/bin/minikube
$ minikube version
minikube version: v1.0.0

安装 kubectl

https://packages.cloud.google.com/apt/doc/apt-key.gpg
https://apt.kubernetes.io/

sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl kubelet kubeadm

Docker 的配置文件:~/.docker/config.json。至少,docker login 之后会生成一个。

~/.minikube/

apt-get update && apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl

参考资料与拓展阅读