1,k8s快速入门

作者: ROCK_杰哥 | 来源:发表于2018-05-28 22:59 被阅读434次

    1,Kubernetes是什么?
    他是一个全新的基于容器技术额分布式架构的方案,是谷歌Borg的一个开源版本。目的是实现资源管理的自动化,以及跨多个数据中心的资源利用率的最大化。
    2,Kubernetes的基本概念
    pod:最小的单元,运行一个或者多个容器
    Node:可以运行一个或者多个pod
    Service:服务,是分布式集群架构的核心,一个Service对象拥有如下特征:

    1拥有一个唯一的指定的名字
    2拥有一个虚拟的IP和端口号
    3能够提供某种远程服务的能力
    4被映射到了提供这种服务能力的一组容器应用上
    

    3,快速入门
    一个纯净的64位的Centos7,开始
    为了测试,关闭防火墙

    systemctl disable firewalld
    systemctl stop firewalld
    

    安装etcd和Kubernetes

    yum install -y etcd kubernetes
    systemctl start etcd
    systemctl start docker
    systemctl start kube-apiserver
    systemctl start kube-controller-manager
    systemctl start kube-scheduler
    systemctl start kubelet
    systemctl start kube-proxy
    

    下载mysql镜像

    docker pull mysql
    

    编写mysql-rc.yaml

    apiVersion: v1
    kind: ReplicationController                   #副本控制器RC
    metadata:
      name: mysql                                         #RC的名称,全局唯一
    spec:
      replicas: 1                                               #pod副本期待数量
      selector:
        app: mysql                                              #符合目标的pod拥有此标签
      template:                                                  #根据此模板创建pod的副本
        metadata:
          labels:
            app: mysql                           
        spec:
          containers:                                              #pod内容器的定义
          - name: mysql                                                   #容器的名称
            image: mysql                                                      #容器的镜像
            ports:
            - containerPort: 3306                                          #容器应用监听的端口
            env:                                                                            #注入容器内的环境变量
            - name: MYSQL_ROOT_PASSWORD                             
              value: "123456"
    

    创建

    kubectl create -f mysql-rc.yaml
    
    
    [root@localhost rc]# kubectl get rc
    NAME      DESIRED   CURRENT   READY     AGE
    mysql     1         1         0         24m
    
    
    [root@localhost rc]# kubectl get pod
    NAME          READY     STATUS    RESTARTS   AGE
    mysql-r832v   1/1       Running   0          1m
    

    这样mysql就已经启动起来了
    成功标识:


    image.png
    image.png

    出现的问题:

    kubectl get pods
    No resources found

    修改办法:

    vi /etc/kubernetes/apiserver
    
    修改:KUBE_ADMISSION_CONTROL
    
    去掉ServiceAccount,保存退出
    systemctl restart kube-apiserver
    ```
    还有一个比较常见的问题就是,kubectl get pods   中status 中一直是ContainerCreating
    
    ```
    ###找到pod-infrastructure
    docker search pod-infrastructure
     docker pull docker.io/zengshaoyong/pod-infrastructure
    
    vi /etc/kubernetes/kubelet
    
    ###修改如下:
    KUBELET_POD_INFRA_CONTAINER="docker.io/zengshaoyong/pod-infrastructure"
    ###重启kubelet
    systemctl restart kubelet
    ```
    看pod日志可以发现****pause:2.0这个pull不下来,所以手动的pull下来,再利用tag修改name就可以了
    ```
    docker search pause:2.0
    docker pull docker.io/google/pause
    docker tag f9d5de079539 gcr.io/google_containers/pause:2.0
    
    
    docker search pause-amd64
    docker pull docker.io/mirrorgooglecontainers/pause-amd64
    docker tag 98aed6f4098f gcr.io/google_containers/pause-amd64:3.0
    
    ```
    
    问题:外网访问不到,应该接受端口转发
    ```
    iptables -P FORWARD ACCEPT
    ```
    

    相关文章

      网友评论

        本文标题:1,k8s快速入门

        本文链接:https://www.haomeiwen.com/subject/sgtwjftx.html