kubernetes - 小试minekube

本文档详细介绍了如何在Ubuntu 22.04服务器上从零开始安装Docker、Minikube和kubectl,并进行相关操作。首先卸载并安装Docker,然后安装Minikube,通过minikube命令启动、停止和管理Kubernetes集群。接着,安装kubectl并进行基本的命令操作,包括创建和管理Pod、Deployment和服务。此外,还展示了如何处理启动问题和调整资源。最后,提供了一些命令实践,帮助读者更好地理解和运用Kubernetes。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
  • 意外情况:
  1. 启动失败,需要先启动docker。
  2. ubuntu server 默认的是snap docker,不太懂,先卸载了
  3. 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

5. 参考文档

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值