1、写作背景
购买HUAWEI云进行K8S集群尝试,上一次已经安装kubectl,现在进行正式的服务创建
2、参考网址
- 使用kube-proxy让外部网络访问K8S service的ClusterIP:https://my.oschina.net/lykops/blog/1616538
3、核心概念
- 创建nginx_deployment.yaml
- 创建nginx_service.yaml(ClusterIP)
- 创建nginx_service.yaml(NodePort)
- 创建nginx_service.yaml(LoadBalance)
4、核心操作
4.1)创建nginx_deployment负载服务
- 1、创建nginx_deployment.yaml
- 进行yaml格式化
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
strategy:
type: RollingUpdate
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
imagePullPolicy: Always
name: nginx
imagePullSecrets:
- name: default-secret
- 2、执行创建命令
kubectl create -f nginx_deployment.yaml
- 3、测试功能使用
4.2) 创建nginx_service.yaml(ClusterIP)
创建了pod之后,可以进行正常访问,但是有一个问题:我要的是负载,并不是单个服务访问,此时要使用service进行映射
- 常见service(ClusterIP)进行负载
apiVersion: v1
kind: Service
metadata:
name: nginxservice
spec:
type: ClusterIP
selector:
app: nginx
ports:
- name: http
protocol: TCP
port: 8080
targetPort: 80
- name: https
protocol: TCP
port: 443
targetPort: 443
- 查看service负载的pod
kubectl get endpoints nginxservice
- 到这里已经完成了pod负载
但是这个IP是集群内部IP,外部没有办法进行访问,但是这个私有IP没有那么简单直接和大网IP挂载一起,要用service其他类型进行暴露
4.3) 创建nginx_service.yaml(NodePort)
- 创建nginx_service.yaml(NodePort)
apiVersion: v1
kind: Service
metadata:
name: nginxservice
spec:
type: NodePort
selector:
app: nginx
ports:
- name: http
nodePort: 30001
protocol: TCP
port: 8080
targetPort: 80
- name: https
nodePort: 30002
protocol: TCP
port: 443
targetPort: 443
- 查看service状态
- 查看service负载
- 测试外网联通性
- 测试外网访问
- 此时service的外网访问已经配置完成,可以进行pod的负载了
4.3) 创建nginx_service.yaml(LoadBalance)
4.4) 创建Ingress进行负载(后续补充)
5、操作总结
至此:我们已经完成了deployment创建pod,然后用 service进行服务负载,让外部API进行访问
- 博客内容已经上传到百度云,需要的朋友自行下载
链接:https://pan.baidu.com/s/1v6oWBK59UHwmXqnKvFwkFA
提取码:vfyt