k8s初体验之minikube

环境:wsl——Ubuntu,具备docker环境

1. 安装 kubectl

  • 在此找到对应版本:https://github.com/kubernetes/kubernetes/releases
  • 在此找到与系统对应的版本:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md#v1200-alpha1
    我选择的是这个二进制版本
    image.png
  • 下载:wget https://dl.k8s.io/v1.20.0-alpha.1/kubernetes-client-linux-arm64.tar.gz
  • 解压:tar -xzvf kubernetes-client-linux-amd64.tar.gz
  • 解压后的目录为kubernetes,执行命令mv kubernetes/client/bin/kubectl /usr/local/bin
  • 验证一下:kubectl
    image.png

2. 安装minikube

  • 在此下载对应的系统版本:https://github.com/kubernetes/minikube/releases/tag/v1.13.1
  • 下载:wget https://github.com/kubernetes/minikube/releases/download/v1.13.1/minikube-linux-amd64.tar.gz
    我选择的是下面这个版本
    image.png
  • 解压:tar -xzvf minikube-linux-amd64.tar.gz
  • 解压后目录为out,执行命令:mv out/minikube-linux-amd64 /usr/local/bin/minikube
  • 验证一下: minikube
    image.png

3.发布一个应用

1.启动

 minikube start --registry-mirror=https://registry.docker-cn.com

image.png

发现docker 驱动不允许root账号来使用。
自行用groupadduseradd增加了一个docker的用户组合用户。
切下用户,启动:
image.png

发现报错了,这个是因为我之前启动过。
Google了一下,找到了解决方式:
image.png

执行一下命令:

minikube delete --all --purge

再启动,发现可以了:


image.png

正在拉取镜像。
发现有点慢,换一个阿里的镜像源试试:

minikube start --vm-driver=docker  --base-image="anjone/kicbase"   --registry-mirror=https://f1z25q5p.mirror.aliyuncs.com

又遇到一个新的问题:


image.png

退出来切到root账号,再执行一下Suggestion的命令,再重新运行,发现可以了:


image.png

2.发布应用

  • 创建 hello-world 部署
kubectl create deployment  hello-world --image=tomcat:8.0 --port=8080
image.png
  • 发布服务
kubectl expose deployment hello-world --type=NodePort
image.png
  • 查看 pods
kubectl get pods
image.png

image.png

部署完成后,状态就变成了 Running

  • 查看 service
kubectl get services
image.png
  • 获取服务地址
minikube service hello-world --url
image.png

curl 一下,发现服务能正常服务了:


image.png

3.使用yml配置文件发布应用

  • 1.新建一个目录go-app,用go写一个简单的http server
package main

import (
 "fmt"
 "net/http"
)

func index(w http.ResponseWriter, r *http.Request) {
 fmt.Fprintf(w, "

Hello World

") } func check(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "

Health check

") } func main() { http.HandleFunc("/", index) http.HandleFunc("/health_check", check) fmt.Println("Server starting...") http.ListenAndServe(":3000", nil) }
  • 2.制作程序镜像
    在目录go-app里面,创建一个Dockerfile
FROM golang:alpine
RUN mkdir /app
COPY . /app
WORKDIR /app
RUN go build -o main . 
CMD ["/app/main"]

build 一下

 docker build -t 10xjzheng/go-hello-world .
image.png

然后我把它push到我的仓库,执行:

docker push 10xjzheng/go-hello-world
image.png

测试一下:

docker run -d -p 3333:3000 --rm --name go-app-container 10xjzheng/go-hello-world

curl 一下:

curl http://127.0.0.1:3333
image.png

Pass !!!

  • 3.编写部署清单文件
    文件名:deployment.yaml,内容如下:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-go-app
spec:
  replicas: 1  # 副本
  selector:
    matchLabels:
      app: my-go-app
  template:
    metadata:
      labels:
        app: go-app
    spec:
      containers:
        - name: go-app-container
          image: 10xjzheng/go-hello-world
          resources:
            limits:
              memory: "128Mi"
              cpu: "500m"
          ports:
            - containerPort: 3000
  • 4.部署应用
    根据部署清单创建应用
kubectl create -f deployment.yaml
  • 5.暴露应用给外部
 kubectl expose deployment my-go-app --type=NodePort --name=go-app-svc --target-port=3000

查看一下pods和service


image.png

image.png

6.获取访问的url

minikube service go-app-svc --url
image.png

验证一下:

image.png

可以啦
赶快试试吧,enjoy it~
参考文章:
https://www.jianshu.com/p/18441c7434a6
https://blog.csdn.net/bbwangj/article/details/82558033
https://stackoverflow.com/questions/62711512/error-from-server-notfound-deployments-extensions-keras-app-not-found
https://mp.weixin.qq.com/s/uruu3qbpSLbTRJJRcWTYqg

你可能感兴趣的:(k8s初体验之minikube)