LOADING

加载过慢请开启缓存 浏览器默认开启

记一次Kubernetes集群的完善

起因

我们成功搭建起了K8s 接下来我们需要搭建一些额外的服务来满足我的需求

包管理器Helm

类似于apt 有了之后我们就不用kubectl 后面跟一坨yml了

在Master节点上输入

url -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

Ingress-Nginx

思来想去还是选择Nginx而不是Traefik,证书的解决我们可以用另一个服务

helm upgrade --install ingress-nginx ingress-nginx \
  --repo https://kubernetes.github.io/ingress-nginx \
  --namespace ingress-nginx --create-namespace

其实还是要跟一坨东西

然后我们就发现有个LoadBalance的Ingress一直在Pending

怎么回事呢

当然是因为我们没有配置负载均衡了

MentalLB

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.15.2/config/manifests/metallb-native.yaml

然后我们需要定义它的行为

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: default-address-pool
  namespace: metallb-system
spec:
  addresses:
  - 192.168.0.240-192.168.0.250 #这改成你想让她分配的IP地址段 不要和路由器上DHCP的重合
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: l2-advertisement
  namespace: metallb-system

然后kubectl apply -f这个yml

测试一下

测试一下Ingress正不正常:Apply这个yml


apiVersion: apps/v1
kind: Deployment
metadata:
  name: test-nginx
  namespace: default
spec:
  replicas: 2                    
  selector:
    matchLabels:
      app: test-nginx
  template:
    metadata:
      labels:
        app: test-nginx
    spec:
      containers:
      - name: nginx
        image: nginx:stable
        ports:
        - containerPort: 80

---

apiVersion: v1
kind: Service
metadata:
  name: test-nginx
  namespace: default
spec:
  selector:
    app: test-nginx
  ports:
    - port: 80
      targetPort: 80
  type: ClusterIP

---

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: test-ingress
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx        
  rules:
  - host: nginx.k8s.lan
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: test-nginx
            port:
              number: 80

他会生成一个Nginx的Deployment 一个指向Deployment的Service 一个指向Service的Ingress 并且地址为nginx.k8s.lan

kubectl get svc -n ingress-nginx

看到ingress-nginx-controller拥有了ExternalIP 就没问题 把dns解析指向这个ip

浏览器访问nginx.k8s.lan 能看到欢迎界面就是成功了

Dashboard

helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard