k8s权威指南(第4版):demo

844 阅读2分钟

一、环境搭建

本地环境为mac。

1. 安装docker for mac

Install Docker Desktop on Mac

本次安装的版本如下:

image.png

2. 开启k8s

image.png

开启了之后会发现k8s一直在starting。主要是网络原因,需要下载很多镜像,比如k8s master的k8s api server,k8s controller,k8s scheduler;k8s node的kubelet, kube-proxy。

解决方案

详见Docker Desktop for Mac/Windows 开启 Kubernetes

操作步骤:

  • git clone github.com/AliyunConta…
  • 查看所有分枝:git branch -a
  • 切换分枝:git checkout -b v1.19.7 origin/v1.19.7 此处的分枝需要跟docker for mac中k8s的版本一致
  • 执行镜像拉取脚本:sh load_images.sh 此处不可以将docker for mac退出
  • 执行完上面的操作应该可以了,如果不可以执行下面的操作
  • rm -fr '~/Library/Group\ Containers/group.com.docker/pki'

二、demo

1. mysql-rc

  • 创建mysql-rc.yaml,内容如下:

    mysql的镜像如果不声明5.7版本,默认会拉取最新的版本,web应用会有数据库连接失败的问题。

    apiVersion: v1
    kind: ReplicationController
    metadata:
     name: mysql
    spec:
     replicas: 1
     selector:
      app: mysql
     template:
      metadata:
       labels:
        app: mysql
      spec:
       containers:
       - name: mysql
         image: mysql:5.7  # 如果不声明版本,默认会拉取最新的版本,web应用会有数据库连接失败的问题
         ports:
         - containerPort: 3306
         env:
         - name: MYSQL_ROOT_PASSWORD
           value: "123456"
    
  • 创建mysql容器

    • kubectl create -f mysql-rc.yaml

    • kubectl get rc // 这一步会很慢,第一次需要拉取mysql镜像。我这边耗时3分钟左右(长城宽带😂)。

    • kubectl get pods

      image.png

      image.png

2. mysql-svc

  • 创建mysql-svc.yaml文件,内容如下:

    apiVersion: v1
    kind: Service
    metadata:
     name: mysql
    spec:
     ports:
      - port: 3306
     selector:
      app: mysql
    
  • 创建mysql-svc

    • kubectl create -f mysql-svc.yaml

    • kubectl get svc

      image.png

3. myweb-rc

  • 创建myweb-rc.yaml,内容如下:

    apiVersion: v1
    kind: ReplicationController
    metadata:
     name: myweb
    spec:
     replicas: 2
     selector:
      app: myweb
     template:
      metadata:
       labels:
        app: myweb
      spec:
       containers:
        - name: myweb
          image: kubeguide/tomcat-app:v1
          ports:
           - containerPort: 8080
          env:
           - name: MYSQL_SERVICE_HOST
             value: 'mysql'           # 这里使用的是mysql的service名字
           - name: MYSQL_SERVICE_PORT # 这里加入了port配置
             value: '3306'
    
  • 创建myweb容器

    • kubectl create -f myweb-rc.yaml

    • kubectl get rc

    • kubectl get pods

      image.png

      image.png

4. 创建myweb-svc

  • 创建myweb-svc.yaml,内容如下:

    apiVersion: v1
    kind: Service
    metadata:
     name: myweb
    spec:
     type: NodePort
     ports:
      - port: 8080
        nodePort: 30001
     selector:
      app: myweb
    
  • 创建myweb svc

    • kubectl create -f myweb-svc.yaml

    • kubectl get svc

      image.png

三、见证奇迹

在浏览器中输入http://[本地mac的ip地址]:30001/demo/

image.png

硬广告

欢迎关注公众号:double6