Kubernetes快速入门

1. Windows安装Kubernetes

Docker Desktop启用Kubernetes

2. 下载代码并构建镜像

git clone https://github.com/nigelpoulton/qsk-book.git

cd App

docker image build -t yourDockerhubCount/qsk-book:1.0 .

docker login

docker image push yourDockerhubCount/qsk-book:1.0

3. 将应用部署到Kubernetes

1. 定义pod.yml文件

apiVersion: v1
kind: Pod
metadata:
  name: first-pod
  labels:
    project: qsk-book
spec:
  containers:
    - name: web-ctr
      image: yourDockerhubCount/qsk-book:1.0
      ports:
        - containerPort: 8080

2. 执行创建pod命令

> kubectl apply -f pod.yml
pod/first-pod created

> kubectl get pods
NAME        READY   STATUS    RESTARTS   AGE
first-pod   1/1     Running   0          7s

3. 定义svc-local.yml文件

apiVersion: v1
kind: Service
metadata:
  name: svc-local
spec:
  type: NodePort
  ports:
  - port: 8080
    protocol: TCP
    targetPort: 8080
    nodePort: 31111
  selector:
    project: qsk-book

4. 执行创建Service命令

> kubectl apply -f svc-local.yml
service/svc-local created
> kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP          75m
svc-local    NodePort    10.96.235.210   <none>        8080:31111/TCP   5s

5. 访问localhost:31111

4. 创建Deployment,增加自我修复

1. 定义deploy.yml文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: qsk-deploy
spec:
  replicas: 5
  selector:
    matchLabels:
      project: qsk-book
  template:
    metadata:
      labels:
        project: qsk-book
    spec: 
      containers:
      - name: qsk-pod
        imagePullPolicy: Always
        ports:
        - containerPort: 8080
        image: yourDockerhubCount/qsk-book:1.0

2. 执行创建Deployment命令

>kubectl apply -f deploy.yml
deployment.apps/qsk-deploy created

kubectl get deployments
NAME         READY   UP-TO-DATE   AVAILABLE   AGE
qsk-deploy   5/5     5            5           21s

> kubectl get pods
NAME                          READY   STATUS    RESTARTS   AGE
qsk-deploy-6c5fdfc6f6-blq8s   1/1     Running   0          36s
qsk-deploy-6c5fdfc6f6-dr562   1/1     Running   0          36s
qsk-deploy-6c5fdfc6f6-fnnpd   1/1     Running   0          36s
qsk-deploy-6c5fdfc6f6-msnvd   1/1     Running   0          36s
qsk-deploy-6c5fdfc6f6-xkkk8   1/1     Running   0          36s

删除一个pod
>kubectl delete pod qsk-deploy-6c5fdfc6f6-blq8s
pod "qsk-deploy-6c5fdfc6f6-blq8s" deleted

Deployment会自动启动一个新的pod,使pod数量恢复到5
> kubectl get pods
NAME                          READY   STATUS    RESTARTS   AGE
qsk-deploy-6c5fdfc6f6-dr562   1/1     Running   0          2m16s
qsk-deploy-6c5fdfc6f6-fnnpd   1/1     Running   0          2m16s
qsk-deploy-6c5fdfc6f6-msnvd   1/1     Running   0          2m16s
qsk-deploy-6c5fdfc6f6-pdtr7   1/1     Running   0          36s
qsk-deploy-6c5fdfc6f6-xkkk8   1/1     Running   0          2m16s

5. 应用扩容

1. 修改deploy.yml文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: qsk-deploy
spec:
  replicas: 10 << 将5改成10
  selector:
    matchLabels:
      project: qsk-book
  template:
    metadata:
      labels:
        project: qsk-book
    spec: 
      containers:
      - name: qsk-pod
        imagePullPolicy: Always
        ports:
        - containerPort: 8080
        image: yourDockerhubCount/qsk-book:1.0

2. 重新执行部署命令

> kubectl apply -f deploy.yml
deployment.apps/qsk-deploy configured
> kubectl get deployments
NAME         READY   UP-TO-DATE   AVAILABLE   AGE
qsk-deploy   10/10   10           10          9m5s
> kubectl get pods
NAME                          READY   STATUS    RESTARTS   AGE
qsk-deploy-6c5fdfc6f6-8km7q   1/1     Running   0          70s
qsk-deploy-6c5fdfc6f6-dr562   1/1     Running   0          9m54s
qsk-deploy-6c5fdfc6f6-f8qct   1/1     Running   0          70s
qsk-deploy-6c5fdfc6f6-fnnpd   1/1     Running   0          9m54s
qsk-deploy-6c5fdfc6f6-j5hv4   1/1     Running   0          70s
qsk-deploy-6c5fdfc6f6-mf2xf   1/1     Running   0          70s
qsk-deploy-6c5fdfc6f6-msnvd   1/1     Running   0          9m54s
qsk-deploy-6c5fdfc6f6-pdtr7   1/1     Running   0          8m14s
qsk-deploy-6c5fdfc6f6-xkkk8   1/1     Running   0          9m54s
qsk-deploy-6c5fdfc6f6-z44wv   1/1     Running   0          70s