Kubernetes
安装
安装 kubectl
shell
sudo apt-get update
# apt-transport-https 可以是一个虚拟包;如果是这样,你可以跳过这个包
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg1
2
3
2
3
shell
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.34/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg # allow unprivileged APT programs to read this keyring1
2
2
shell
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.34/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list # 有助于让诸如 command-not-found 等工具正常工作1
2
2
shell
sudo apt-get update
sudo apt-get install -y kubectl1
2
2
安装 minikube
shell
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_arm64.deb
sudo dpkg -i minikube_latest_arm64.deb1
2
2
shell
sudo usermod -aG docker $USER && newgrp docker1
shell
minikube start1
shell
kubectl cluster-info1
shell
kubectl get nodes1
应该看到类似下面的输出:
shell
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 1m v1.30.01
2
2
使用
启动
Debug
查看 Pod 日志:
shell
kubectl logs nginx-xxxxxx1
shell
kubectl exec -it nginx-xxxxxx -- bash1
shell
kubectl describe pod nginx-xxxxxx1
最常用来排查镜像拉取失败、CrashLoopBackOff 等。
shell
kubectl delete deployment nginx1
原理
Pod
ReplicaSet
Deployment(概念)
Service(概念)
部署验证 —— 部署第一个应用
Deployment
先创建一个 Deployment 文件:
nginx-deploy.yaml
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 801
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
shell
kubectl apply -f nginx-deploy.yaml1
shell
kubectl get pods -l app=nginx1
你应该看到类似:
shell
nginx-5c68965b8f-bvzfm 1/1 Running 0 10s
nginx-5c68965b8f-k92lg 1/1 Running 0 10s1
2
2
Service
创建文件:
nginx-svc.yaml
yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
type: NodePort
selector:
app: nginx
ports:
- port: 80
targetPort: 80
nodePort: 300801
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
部署:
shell
kubectl apply -f nginx-svc.yaml1
查看:
shell
kubectl get svc1
你会看到:
shell
nginx-svc NodePort ... 80:30080/TCP1
访问
shell
curl http://localhost:300801
shell
minikube service nginx-svc1
它会自动打开浏览器访问。
滚动更新(Rolling Update)
修改 Deployment,将镜像改为:
yaml
image: nginx:1.21.01
重新 apply:
shell
kubectl apply -f nginx-deploy.yaml1
shell
kubectl rollout status deployment/nginx1
shell
kubectl rollout undo deployment/nginx1