基本组件

Cluster

基本组成

image-20240627100441770

通过kubectl,对控制平面进行操作

image-20240627100646532

输入kubelctl apply -f xxx.yaml后,发生了什么?

  • 首先通过HTTP请求,发送至控制平面的API Server
  • 通过Scheduler,利用ETCD中的数据,寻找合适的Node
  • 通过Controller Mgr,控制Node内部的Kubelet
  • Kubelet基于Container runtime拉取镜像,完成Pod的创建

image-20240627100743418

创建Cluster

在本地调试开发时,可以使用kind进行安装,会安装一个cluster到docker中

Pods

一个Pod内,包含多个Container(可以理解为Docker镜像)

image-20240627102027363

Developments

Service

Ingress

HTTP请求后,先通过Ingress控制器,转换至某个Node的Kube Proxy中,通过其转发到某个Pod上

image-20240627101246472

目前higress:

如果我们的业务经常会增加不同的监听端口,那对于higress来说,不仅仅要调整kind: Gateway 资源内的port, 还要同步调整 higress-gateway service的port,相当

切换集群:


# 获取所有clusters
kubectl config get-contexts
# 获取当前集群信息
kubectl cluster-info
# 更改集群
kubectl config use-context kind-higress
#
kubectl get deployments --all-namespaces

启动higress console

  • 先frontend运行npm install, npm run build

  • backend运行maven package

  • 转发集群内端口:

    kubectl port-forward deployment/higress-controller -n higress-system 15014
    
  • higress-core.gateway.hostNetwork设为true,重启minikube

使用k9s

启动k8s & higress

minikube start
kubectl get svc -n higress-system
# 开启foo-app
kubectl apply -f foo-app.yaml

# 测试
curl http://localhost/foo -H 'host: foo.bar.com'

测试httpdns

参考文献:

Kubernetes 练习手册

Kubernetes(k8s)是什么?