如何在 Windows 环境下的K8S,可以查看前面的文章
https://blog.youkuaiyun.com/benchem/article/details/116914562
创建K8S命名空间
powerShell
kubectl create namespace spring-cloud-demo
创建私有docker仓库 Secret
Kubernetes 集群使用 docker-registry 类型的 Secret 来通过容器仓库的身份验证,进而提取私有映像。
创建 Secret,命名为 regcred:
powerShell
kubectl create secret docker-registry regcred `
--docker-server=<你的镜像仓库服务器> `
--docker-username=<你的用户名> `
--docker-password=<你的密码> `
--docker-email=<你的邮箱地址> `
--namespace=spring-cloud-demo
部署脚本
Deployment
deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: <部署名称>
namespace: <命名空间>
labels:
app: <标签>
spec:
replicas: <实例份数>
selector:
matchLabels:
app: <标签>
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
minReadySeconds: 5
revisionHistoryLimit: 2
template:
metadata:
labels:
app: <标签>
spec:
containers:
- name: <部署名称>
image: <镜像地址>
imagePullPolicy: Always
env:
- name: TZ
value: "Asia/Shanghai"
resources:
limits:
memory: 2000Mi
cpu: 1
requests:
memory: 150Mi
cpu: 0.07
imagePullSecrets:
- name: <镜像库拉取秘钥>
powerShell
kubectl apply -f ./deploy.yaml
Services
service.yaml
kind: Service
apiVersion: v1
metadata:
labels:
app: <标签>
name: <服务名称>
namespace: <命名空间>
spec:
selector:
app: <部署.标签名称>
ports:
- name: port-<导出端口>
port: <导出端口>
powerShell
kubectl apply -f ./service.yaml
Ingress
在WSL2环境使用 Ingress 必须先安装 Ingress
powerShell
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.46.0/deploy/static/provider/cloud/deploy.yaml
ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: <ingressName>
namespace: <命名空间>
spec:
rules:
- host: "<绑定域名>"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: <后端接Services的名称>
port:
number: <服务端口>
powerShell
kubectl apply -f ./ingress.yaml
在 Windows 平台下,可以通过修改本地 host 文件来模拟域名指向
Eureka 部署完整脚本
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: eureka
namespace: spring-cloud-demo
labels:
app: eureka
spec:
replicas: 1
selector:
matchLabels:
app: eureka
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
minReadySeconds: 5
revisionHistoryLimit: 2
template:
metadata:
labels:
app: eureka
spec:
containers:
- name: eureka
image: springcloud/eureka
imagePullPolicy: Always
env:
- name: TZ
value: "Asia/Shanghai"
resources:
limits:
memory: 2000Mi
cpu: 1
requests:
memory: 150Mi
cpu: 0.07
eureka-service.yaml
kind: Service
apiVersion: v1
metadata:
labels:
app: eureka-svc
name: eureka-svc
namespace: spring-cloud-demo
spec:
selector:
app: eureka
ports:
- name: port-8761
port: 8761
eureka-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: eureka-ingress
namespace: spring-cloud-demo
spec:
rules:
- host: "eurka.benchan.com"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: eureka-svc
port:
number: 8761