kubernetes 安装入门2

      在之前的1中先将环境搭建好,之后就开始动手创建了一个简单的演示示例了,其中也分享一下者期间遇到过的错误。

      先定义一个mysql-rc.yaml的文件:

      apiVersion: v1
      kind: ReplicationController
      metadata:
           name: mysql
      spec:
          replicas: 1
          selector:
              app: mysql
          template:
             metadata:
                  labels:
                     app: mysql
             spec:
                 containers:
                  - name: mysql
                    image: docker.io/mysql:5.6
                    ports:
                     - containerPort: 3306
                     env:
                      - name: MYSQL_ROOT_PASSWORD
                        value: "123456"

     这里我标红的地方需要额外的注意,mysql的版本如果选的太新的话在连接上会有问题。

     参考问题链接:https://blog.csdn.net/yinanmo5569/article/details/81352578

     创建完毕之后再创建mysql 的service文件:mysql-svc.yaml

      apiVersion: v1
      kind: Service
      metadata:
          name: mysql
      spec:
          ports:
           - port: 3306
          selector:
             app: mysql

      数据库准备完毕之后就可以准备web了,创建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: docker.io/kubeguide/tomcat-app:v1
                    ports: 
                     - containerPort: 8080
                   # env:
                   # - name: MYSQL_SERVICE_HOST
                  #   value: 'mysql'
                  # - name: MYSQL_SERVICE_PORT
                  #   value: '3306'

          标红注释的地方又是一个非常恶心的地方,详见:

          https://stackoverflow.com/questions/49204339/mysql-communications-link-failure-in-kubernetes-sample

          我采用的方法是stackoverflow里的第二个回答的方法。

          再然后,创建myweb-svc.yaml文件

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

 

         准备工作终于都结束了,那么久开始执行kubectl create -f mysql-rc.yaml,kubectl create -f mysql-svc.yaml,kubectl create -f myweb-rc.yaml,kubectl create -f myweb-svc.yaml这四条指令,如果出错,删除对应的创建kubectl delete -f xxx.yaml

或者使用 kubectl describe 查看出错的原因,具体参考https://www.kubernetes.org.cn/doc-61

         正常来讲,做到这一步应该都是正常可以的,使用curl http://localhost:30001/demo可以返回一个正常的页面才对,事实也的确如此,但是在浏览器上却没法显示,这只是我个人的原因,我将k8s部署到腾讯云上作为测试,用外网无法访问,只能在本地使用curl指令来测试,很不合理,找了许久的情况下终于找到了问题。

         先说解决办法,执行iptables -P FORWARD ACCEPT就可以。

         问题参考链接:https://github.com/feiskyer/kubernetes-handbook/issues/122

你可能感兴趣的:(kubernetes)