起因
我们成功搭建起了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