kubernetes - 小试minekube
所有操作基于ubuntu-22.04-server-amd64新装的系统,使用普通用户,建议先看看文章底部的参考文档。
1. 安装Docker
sudo snap remove docker # 卸载snap docker
sudo apt install docker.io # 安装docker,简单点,就不安装docker-ce了
sudo gpasswd -a ${USER} docker # 当前用户加入docker用户组
sudo systemctl enable docker
sudo systemctl restart docker
2. 安装minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
minikube start # 启动
minikube stop # 停止
minikube delete --all # 清空
minikube dashboard # 使用WebUI控制台
- 版本信息
zcw@ubuntu30:~$ minikube version
minikube version: v1.26.0
commit: f4b412861bb746be73053c9f6d2895f12cf78565
- 意外情况:
- 启动失败,需要先启动docker。
- ubuntu server 默认的是snap docker,不太懂,先卸载了
- hyper-v虚拟机,打开了动态内存,导致系统检测内存只有1.15g,无法启动
3. 安装kubectl
curl -LO https://dl.k8s.io/release/v1.24.0/bin/linux/amd64/kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
- 版本信息
zcw@ubuntu30:~$ kubectl version --output=yaml
clientVersion:
buildDate: "2022-05-03T13:46:05Z"
compiler: gc
gitCommit: 4ce5a8954017644c5420bae81d72b09b735c21f0
gitTreeState: clean
gitVersion: v1.24.0
goVersion: go1.18.1
major: "1"
minor: "24"
platform: linux/amd64
kustomizeVersion: v4.5.4
serverVersion:
buildDate: "2022-05-24T12:18:48Z"
compiler: gc
gitCommit: 3ddd0f45aa91e2f30c70734b175631bec5b5825a
gitTreeState: clean
gitVersion: v1.24.1
goVersion: go1.18.2
major: "1"
minor: "24"
platform: linux/amd64
4. 命令练习
仅一些命令的测试,需要更完善的参数看文档吧
4.1 Basic
kubectl apply -f filename.yaml # 通过文件应用配置
kubectl get events # 查看集群事件
kubectl config view # 查看配置
kubectl get all
kubectl delete all --all # 删库跑路命令
4.2 Pod
- pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: test-pod # pod名
spec:
# 定义容器,可以多个
containers:
- name: echoserver # 容器名
image: k8s.gcr.io/echoserver:1.4
- 命令
kubectl apply -f pod.yaml # 通过文件运行
kubectl run hello-pod --image=k8s.gcr.io/echoserver:1.4 # 直接运行
kubectl get pods # 列出所有pod
kubectl logs hello-pod # 查看pod日志
kubectl describe pod hello-pod # 查看pod详情
kubectl delete pod hello-pod # 删除
kubectl exec -it hello-pod bash # 同docker exec
kubectl port-forward hello-pod 8088:8080 # local:8088 -> pod:8080
4.3 Deployment
- deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
# 部署名字
name: test-deployment
spec:
replicas: 2
# 用来查找关联的 Pod,所有标签都匹配才行
selector:
matchLabels:
app: test-deployment-pod
# 定义 Pod 相关数据
template:
metadata:
labels:
app: test-deployment-pod
spec:
# 定义容器,可以多个
containers:
- name: echoserver # 容器名
image: k8s.gcr.io/echoserver:1.4
- 命令
kubectl create deployment hello-deployment --image=k8s.gcr.io/echoserver:1.4
kubectl get deployments
kubectl describe deployment hello-deployment # 查看deployment信息
kubectl scale deployment hello-deployment --replicas=5 # 伸缩扩展副本
kubectl rollout history deployment hello-deployment # 查看历史
kubectl rollout undo deployment hello-deployment # 回到上个版本
kubectl rollout undo deployment hello-deployment --to-revision=2 # 回到指定版本
kubectl rollout restart deployment test-k8s # 重新部署
# 暂停运行,暂停后,对 deployment 的修改不会立刻生效,恢复后才应用设置
kubectl rollout pause deployment hello-deployment
# 暂停恢复
kubectl rollout resume deployment hello-deployment
# 命令修改镜像,--record 表示把这个命令记录到操作历史中
kubectl set image deployment test-k8s hello-deployment=ck8s.gcr.io/echoserver:1.5 --record
kubectl get deployment hello-deployment -o yaml >> hello-deployment.yaml # 输出到文件
kubectl delete deployment hello-deployment # 删除部署
4.4 Service
- service.yaml
apiVersion: v1
kind: Service
metadata:
name: test-k8s
spec:
selector:
app: test-k8s
type: ClusterIP # 具体类型目前还不熟,这里仅入门试试,以后填坑
ports:
- port: 8080 # 本 Service 的端口
targetPort: 8080 # 容器端口
- 命令
kubectl apply -f service.yaml
kubectl get svc
kubectl describe svc test-k8s
kubectl port-forward service/test-k8s 8888:8080