# 启动
kubectl apply -f /root/test/deployment_nginx.yaml
# 查看pod
kubectl get pods -l nginx_pod=nginx_pod_la -o wide
# 启动
kubectl apply -f /root/test/service_nginx.yaml
# 查看service
kubectl get svc service-nginx
# 查看service明细
kubectl describe svc service-nginx
# 创建命名空间dev
kubectl create ns dev
# 查看dev空间的所有资源
kubectl get all -n dev
vim /root/test/deployment_nginx.yaml
内容
apiVersion: apps/v1
kind: Deployment
metadata:
# Deployment 的名称
name: deployment-nginx
# Deployment 的标签
labels:
k1: k1_la
k2: k2_la
spec:
# 副本数目
replicas: 3
# 选择器
selector:
# 选择器匹配的标签
matchLabels:
nginx_pod: nginx_pod_la
# Pod 模板
template:
metadata:
# Pod的标签
labels:
nginx_pod: nginx_pod_la
spec:
containers:
# 容器名称
- name: nginx
# 镜像
image: nginx
# 镜像策略
imagePullPolicy: IfNotPresent
# 容器端口
ports:
- containerPort: 80
vim /root/test/service_nginx.yaml
内容
apiVersion: v1
kind: Service
metadata:
# Service 的名称
name: service-nginx
labels:
# Service 的标签
service_k1: k1_la
spec:
ports:
# 端口
- port: 80
# 协议
protocol: TCP
# 标签选择器,选择Deployment 的标签
selector:
nginx_pod: nginx_pod_la
Service.spec.type:ClusterIP
Service.spec.type:nodePort
访问物理节点(master节点或者node节点)ip:宿主机映射的端口
映射到--->service ip:service的端口
映射到----->pod ip:container port
http://192.168.187.154:30771/
Service.spec.type:ExternalName
apiVersion: v1
kind: Service
metadata:
# Service 的名称
name: service-nginx
# 命名空间
namespace: dev
spec:
type: ExternalName
externalName: hd.db.com
Service.spec.type:LoadBalancer
kind: Service
apiVersion: v1
metadata:
# Service 的名称
name: service-nginx
spec:
selector:
# 标签选择器,选择 k1-nginx: v1 标签
k1-nginx: v1
ports:
# TCP 协议
- protocol: TCP
# service 端口
port: 80
# 目标端口
targetPort: 9376
# 节点端口
nodePort: 30061
# 集群IP
clusterIP: 10.0.171.239
# 负载IP
loadBalancerIP: 78.11.24.19
# 服务类型
type: LoadBalancer
status:
loadBalancer:
ingress:
- ip: 146.148.47.155
apiVersion: v1
kind: Service
metadata:
# Service 的名称
name: service-nginx
labels:
# Service 的标签
service_k1: k1_la
spec:
clusterIP: 'None'
ports:
# 端口
- port: 80
# 协议
protocol: TCP
# 标签选择器,选择Deployment 的标签
selector:
nginx_pod: nginx_pod_la
Endpoint控制器在API中创建了Endpoints记录,并且修改DNS配置返回记录(地址),通过这个地址直接到达Service的后端Pod上
先要执行删除动作,再启动
kubectl delete -f /root/test/service_nginx.yaml
kubectl apply -f /root/test/service_nginx.yaml
配置内容
apiVersion: v1
kind: Service
metadata:
# Service 的名称
name: service-nginx
labels:
# Service 的标签
service_k1: k1_la
spec:
clusterIP: 'None'
ports:
# 端口
- port: 80
# 协议
protocol: TCP
Endpoint 控制器不会创建Endpoints记录。
在混合云环境中,从虚拟私有云(VPC)环境中的服务 路由流量
在 Service 中增加 annotation 来实现,如下所示:
[...]
metadata:
name: my-service
annotations:
service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
[...]
在水平分割的DNS环境中,需要两个Service来将外部和内部的流量路由到Endpoint 上。
对运行在AWS上部分支持SSL的集群,从1.3版本开始,可以为LoadBalancer类型的Service增加两个annotation.
metadata:
name: my-service
annotations:
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012
metadata:
name: my-service
annotations:
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: (https|http|ssl|tcp)
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- name: http
protocol: TCP
port: 80
targetPort: 3306
externalIPs:
- 80.11.12.10
在上面的例子中,my-service可以在80.11.12.10:80(外部IP:端口)上被客户端访问。