init pod RC RS deployment

22  初始化容器 Init Container

kubectl get pods --all-namespaces -o wide
ssh node01
docker ps |grep liveness-exec
docker ps
k8s.gcr.io/pause-amd64.3.1   就是infra容器

docker ps |grep hrjr-web
docker ps
k8s.gcr.io/pause-amd64.3.1   就是infra容器

infra容器就是网络共享命名空间的容器

initpod1.yaml

---
apiVersion: v1
kind: Pod
metadata:
  name: init-pod
  labels:
    app: init
spec:
  initContainers:
    - name: init-myservice
      image: busybox
      command: ['sh', '-c', 'unit nslookup myservice; do echo waiting for myservice; sleep 2; done;']
    - name: init-mydb
      image: busybox
      command: ['sh','-c','until nslookup mydb; do echo waiting for mydb; sleep 2; done;']
  containers:
    - name: main-container
      image: busybox
      command: ['sh','-c', 'echo The app is running! && sleep 3600']
 

kubectl apply -f init-pod1.yaml



initservice.yaml

---
apiVersion: v1
kind: Service
metadata:
  name: myservice
spec:
  ports:
  - protocol: TCP
    port: 80
    targetPort: 6379


kubectl create -f initservice.yaml
kubectl get pods
kubectl get svc


vi initservice.yaml

---
apiVersion: v1
kind: Service
metadata:
  name: myservice
spec:
  ports:
  - protocol: TCP
    port: 80
    targetPort: 6379

---
apiVersion: v1
kind: Service
metadata:
  name: mydb
spec:
  ports:
  - protocol: TCP
    port: 80
    targetPort: 6378


kubectl apply -f initservice.yaml



initconfig.yaml

---
apiVersion: v1
kind: Pod
metadata:
  name: init-demo
  labels:
    app: init
spec:
  initContainers:
  - name: install
    image: busybox
    command:
    - wget
    - "-O"
    - "/work-dir/index.html"
    - http://www.baidu.com
    volumeMounts:
    - name: workdir
      mountPath: /work-dir
  containers:
    - name: nginx
      image: nginx
      ports:
      - containerPort: 80
      volumeMounts:
      - name: workdir
        mountPath: /usr/share/nginx/html
  volumes:
    - name: workdir
      emptyDir: {}

kubectl create -f initconfig.yaml

kubectl exec -it init-demo --/bin/bash



23 Replication Controller 与 Replica Set

RC && RS

rc-demo.yaml

---
apiVersion: v1
kind: ReplicationController
metadata:
  name: rc-demo
  labels:
    app: rc
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: rc
    spec:
      containers:
      - name: nginx-demo
        image: nginx
        ports:
        - containerPort: 80


kubectl create -f rc-demo.yaml
kubectl get replicationcontroller
简写:
kubectl get rc
kubectl describe rc rc-demo
kubectl get pods

修改副本数量为2个以后,更新rc-demo
kubectl apply -f rc-demo.yaml
kubectl edit rc rc-demo
dashboard 控制面板 scale 修改pod数量

在线升级nginx版本,滚动更新功能
kubectl rolling-update rc-demo --image=nginx:1.7.9

24 Deployment 的使用

deploy-demo.yaml

---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: nginx-deploy
  labels:
    app: nginx-demo
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80


kubectl get rs

---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: nginx-deploy
  labels:
    app: nginx-demo
spec:
  replicas: 3
  minReadySeconds: 5      #5秒钟后更新
  strategy:              
    type: RollingUpdate   #滚动更新
    rollingUpdate:
      maxSurge: 1         #更新中 比原pod数最多多1个出来
      maxUnavailable: 1   #更新中 最多允许1个pod不能提供服务
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80


查看更新状态:
kubectl apply -f deploy-demo.yaml
kubectl rollout status deployment nginx-deploy   升级状态
kubectl rollout pause deployment nginx-deploy    暂停升级
kubectl rollout resume deployment nginx-deploy   恢复升级
kubectl get rs
kubectl get deployment
kubectl describe deployment nginx-deploy

kubectl rollout pause deployment nginx-deploy

kubectl rollout history deployment nginx-deploy   查看更新历史

kubectl apply -f deploy-demo.yaml --record=true    记录更新时使用的命令



---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: nginx-deploy
  labels:
    app: nginx-demo
spec:
  replicas: 3
  revisionHistoryLimit: 15   #最小数量历史版本为 15个
  minReadySeconds: 5         #5秒钟后更新
  strategy:              
    type: RollingUpdate      #滚动更新
    rollingUpdate:
      maxSurge: 1            #更新中 比原pod数最多多1个出来
      maxUnavailable: 1      #更新中 最多允许1个pod不能提供服务
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80


kubectl get rs   
kubectl describe rs nginx-deploy-xxxyyy   
Annotations:  deployment.kubernetes.io/revision=2   即是历史版本

kubectl delete rs nginx-deploy-xxxyyy  删除pod
kubectl rollout history deployment nginx-deploy

回滚到上一个版本:
kubectl rollout undo deployment nginx-deploy
kubectl rollout status deployment nginx-deploy
kubectl get deployment nginx-deploy
kubectl get rs
kubectl get pods
kubectl describe pod nginx-deploy


回滚到指定版本: 修改 yaml 文件

回滚到 3 号版本:
kubectl rollout undo deployment nginx-deploy --to-revision=3


kubectl rollout history deployment nginx-deploy

原文地址:https://www.cnblogs.com/walkersss/p/11811159.html