跳至主要內容

kubernetes无状态

知识库容器技术kubernetes介绍kubernetes介绍大约 2 分钟

无状态

就是没有特殊状态的服务,各个请求对于服务器来说统一无差别处理,请求自身携带了所有服务端所需要的所有参数。没有要实时保存的数据。

Pod

Pod是一个逻辑概念,它是Kubernetes资源调度的单元,一般会把一组功能强相关的容器逻辑上称之为一个pod,Pod就是所说的实例。

缺点: 不支持高并发, 高可用, 当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之间使用的问题。

service
service
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