k8s实操记录(更新中...)

119 阅读2分钟

使用minikube

准备

  1. 安装过程略 minikube.sigs.k8s.io/docs/start/
  2. 准备使用自己制作的镜像,代码如下,过程参考 juejin.cn/post/726669…
@RestController
public class UserController {
    private AtomicLong currentCount = new AtomicLong();

    @GetMapping("view")
    public String viewCount() {
        String currentShow = "<h1>当前访问次数:" + currentCount.incrementAndGet() + "</h1>";
        String message;
        try {
            InetAddress addr = InetAddress.getLocalHost();
            message = addr.getHostName() + "-" + addr.getHostAddress();
        } catch (UnknownHostException e) {
            message = "error";
        }

        return currentShow + "\n" + message;
    }
}
  1. 启动minikube:minikube start --driver=docker --force
  2. 构建镜像到minikube docker minikube image build -t docker-test-mini:latest /data/my-docker-images/ ,这里的路径是我存放dockerfile的位置 image.png 进入minikube docker查看是否已有镜像 image.png

使用yaml创建pod

  1. 创建mypod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: docker-test-mini:latest
      ports:
        - containerPort: 8090

2.应用配置文件,并查看pod(status为创建中...)

image.png 再次查看pod状态(pull镜像失败)

image.png 查看详细信息 kubectl describe pod my-pod

image.png 显示拉取镜像失败,我使用的自己制作的镜像,所以改一下mypod.yaml配置文件,不去拉镜像

image.png 删除my-pod,再次apply一下,可以了,status为running

image.png

使用yaml创建deployment

  1. 创建mydeployment.yaml文件

apiVersion: apps/v1  # 使用的 Kubernetes API 版本
kind: Deployment  # 创建的资源类型为 Deployment
metadata:
  name: my-deployment  # Deployment 的名称
spec:
  replicas: 3  # 指定 Deployment 的副本数为 3
  selector:
    matchLabels:
      app: my-app  # 用于选择关联的 Pod 的标签
  template:
    metadata:
      labels:
        app: my-app  # Pod 模板的标签,与上面的选择器匹配
    spec:
      containers:
      - name: my-container  # 容器的名称
        image: docker-test-mini:latest  # 容器使用的镜像
        imagePullPolicy: Never
        ports:
        - containerPort: 8090  # 容器内部的端口号

2.应用文件,查看deployment,查看pod

image.png 查看程序日志

image.png 进入第一个pod,请求程序接口

image.png 请求其他两个pod也是可以的

image.png 3.动态修改mydeployment.yaml文件中副本数量为2,可以看到第一个pod正在停止,再次查看,已经关闭

image.png

使用service访问pod

  1. 创建myservice.yaml文件
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
    - port: 8090
      targetPort: 8090
  type: ClusterIP

2.应用文件,查看service信息,Endpoints对应两个pod image.png 3.当前文件使用的是type: ClusterIP,只能集群内访问,因此进入某个pod,使用上图中的service ip,可以看到负载到两个pod上

image.png 4.通过nodePort的方式把服务暴露给集群外部访问,复制myservice.yaml文件为myservice_nodeport.yaml,修改type并应用

image.png 直接使用minikube ip来访问

image.png image.png