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