kubernetes无状态
大约 2 分钟
无状态
就是没有特殊状态的服务,各个请求对于服务器来说统一无差别处理,请求自身携带了所有服务端所需要的所有参数。没有要实时保存的数据。
Pod
Pod是一个逻辑概念,它是Kubernetes资源调度的单元,一般会把一组功能强相关的容器逻辑上称之为一个pod,Pod就是所说的实例。
缺点: 不支持高并发, 高可用, 当Pod当机后无法自动恢复。

apiVersion: v1
kind: Pod
metadata:
name: demo
namespace: default
labels:
name: nginx
spec:
containers:
- image: nginx
name: nginx
## 获取镜像策略 Always | Never | IfNotPresent
imagePullPolicy: Always
## pod重启策略 Always | OnFailure | Never
restartPolicy: Always
kubectl get pod -A
ReplicationController
ReplicationController(简称rc)是pod的复制抽象,用于解决pod的扩容缩容问题。
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: demo-rc
labels:
app: demo-rc
spec:
replicas: 2
selector:
matchLabels:
app: demo-rc
template:
metadata:
labels:
app: demo-rc
spec:
containers:
- name: httpd
image: httpd
imagePullPolicy: Always
kubectl create -f replicaset.yaml
kubectl get replicaset
Service
service是pod的路由代理抽象,用于解决pod之间的服务发现问题,即上下游pod之间使用的问题。

apiVersion: v1
kind: Service
metadata:
name: demo
spec:
type: NodePort
ports:
- port: 80
nodePort: 80
selector:
app: httpd-demo
kubectl apply -f svc.yaml
kubectl get svc
Lable
标签用于区分对象(比如Pod、Service),键/值对存在;每个对象可以有多个标签,通过标签关联对象。
POD
kubectl get pod,deployment,service,secret,configmap,endpoints -A
Deployment(应用管理者)
Deployment在继承Pod和Replicaset的所有特性的同时, 它可以实现对template模板进行实时滚动更新并具备我们线上的Application life circle的特性.
apiVersion: apps/v1
kind: Deployment
metadata:
name: httpd-deployment
labels:
app: httpd-deployment
spec:
replicas: 2
selector:
matchLabels:
app: httpd-demo
template:
metadata:
labels:
app: httpd-demo
spec:
containers:
- name: httpd
image: httpd
imagePullPolicy: Always
ports:
- containerPort: 80
env:
- name: VERSION
value: "v1"
kubectl create -f deployment.yaml
kubectl get deployment
kubectl get pods -o wide
kubectl describe deployment
## 编辑Deployment
kubectl edit -f deployment.yaml
kubectl apply -f deployment.yaml
## 扩容与缩容
kubectl scale deployment/httpd-deployment --replicas=1
## 删除Deployment
kubectl delete deployment httpd-deployment