前置了解: 一文讲明白-K8S各核心架构组件, K8S之服务注册与发现
其他人的总结: 最详细的K8S学习笔记总结, K8s工作流程详解
1,Pod入门基本概念,网络和存储共享,Infra/Pause容器
2,k8s网络模型与集群通信
基于网络插件calico,flannel,集群内不管是pod访问pod,还是pod与node之间相互通信都可以成功。
k8s的Service Type主要有以下几种:
1,ClusterIP : 在集群哪部使用,默认值。只能在集群内使用。
2,NodePort :在所有安装了Kube-Proxy的节点上打开了一个端口,此端口可以代理至后端Pod,可以通过NodePort从集群外部访问集群内部的服务,格式NodeIP:NodePort
3,LoadBalancer:使用云服务商的负载均衡器公开服务。
可以通过NodePort类型的Service在集群外部访问K8s集群内的应用。
3,Ingress
下面两个图是官网的不同类型示例
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: simple-fanout-example
spec:
rules:
- host: foo.bar.com
http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: service1
port:
number: 4200
- path: /bar
pathType: Prefix
backend:
service:
name: service2
port:
number: 8080
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: name-virtual-host-ingress
spec:
rules:
- host: foo.bar.com
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: service1
port:
number: 80
- host: bar.foo.com
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: service2
port:
number: 80
下面是咕泡学习
测试:
编写my_tomcat.yaml文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: tomcat-deployment
labels:
app: tomcat
spec:
replicas: 1
selector:
matchLabels:
app: tomcat
template:
metadata:
labels:
app: tomcat
spec:
containers:
- name: tomcat
image: tomcat
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: tomcat-service
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8080
selector:
app: tomcat
[root@m yaml]# kubectl apply -f my_tomcat.yaml
deployment.apps/tomcat-deployment created
service/tomcat-service created
[root@m yaml]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
tomcat-deployment-6b89757df7-nq7jp 1/1 Running 0 4m9s 10.244.1.10 w1 <none> <none>
[root@m yaml]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 19h
tomcat-service ClusterIP 10.101.217.254 <none> 80/TCP 2m2s
[root@m yaml]# kubectl describe svc tomcat-service
Name: tomcat-service
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=tomcat
Type: ClusterIP
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.101.217.254
IPs: 10.101.217.254
Port: <unset> 80/TCP
TargetPort: 8080/TCP
Endpoints: 10.244.1.10:8080 (这里是管理了一个tomcat的pod)
Session Affinity: None
Events: <none>
此时service和pod已经弄好。接下来部署Nginx Ingress Controller,由于不好操作演示,暂时理解就行。