K8S

作者: 尛尛大尹 | 来源:发表于2017-12-14 11:28 被阅读0次

1、容器编排三套解决方案:

kubernetes
mesos+marathon
machine+swarn+compose

2、 Kubernetes:

        组件:master, nodes, database(k/v store)
            master:apiserver, controller-manager, scheduler
            nodes: kubelet, kube-proxy, container runtime
        核心术语:
            Pod, label, service, ingress
        网络插件:flannel, ...
Kubernetes-1.8安装:
    yum 仓库:
        https://yum.kubernetes.io/
        https://packages.cloud.google.com/yum/repos

3、 Kubernetes Cluster:

    环境:
        master, etcd:172.18.0.67
        node1:172.18.0.68
        node2:172.18.0.69
    前提:
        1、基于主机名通信:/etc/hosts;
        2、时间同步;
        3、关闭firewalld和iptables.service;
        
        OS:CentOS 7.3.1611, Extras仓库中;
        
    安装配置步骤:
        1、etcd cluster,仅master节点;
        2、flannel,集群的所有节点;
        3、配置k8s的master:仅master节点;
            kubernetes-master
            启动的服务:
                kube-apiserver, kube-scheduler, kube-controller-manager
        4、配置k8s的各Node节点;
            kubernetes-node 
            
            先设定启动docker服务;
            启动的k8s的服务:
                kube-proxy, kubelet

4、deployment示例:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  # Unique key of the Deployment instance
  name: deployment-example
spec:
  # 2 Pods should exist at all times.
  replicas: 2
  template:
    metadata:
      labels:
        # Apply this label to pods and default
        # the Deployment label selector to this value
        app: nginx
    spec:
      containers:
      - name: nginx
        # Run this image
        image: nginx:1.12

5、service示例:

    kind: Service
    apiVersion: v1
    metadata:
    # Unique key of the Service instance
        name: nginx-example
    spec:
        ports:
            # Accept traffic sent to port 80
            - name: http
              port: 80
              targetPort: 80
        selector:
            # Loadbalance traffic across Pods matching
            # this label selector
            app: nginx
        # Create an HA proxy in the cloud provider
        # with an External IP address - *Only supported
        # by some cloud providers*
        type: LoadBalancer        

6、Docker Compose

MySQL:
    mysql: ### 容器名称
        image: mysql:5.7 ### 官方镜像 版本号5.7
        volumes:
            - mysql-data:/var/lib/mysql ### 数据卷,mysql数据就存放在这里
        ports:
            - "3306:3306" ###端口映射,主机端口:容器对外端口
        environment:
            - MYSQL_ROOT_PASSWORD=123456  ### 设置环境变量,这个变量名是官方镜像定义的。
                
PHP:
    php-fpm:
        build:
            context: ./php ### 自定义PHP镜像的配置目录
        volumes:
            - ./www:/var/www/html ### 主机文件与容器文件映射共享,PHP代码存这里
        expose:
            - "9000" ### 容器对外暴露的端口
        depends_on:
            - mysql ### 依赖并链接Mysql容器,这样在PHP容器就可以通过mysql作为主机名来访问Mysql容器了
        
  Nginx:
    nginx:
        build:
            context: ./nginx ### 自定义Nginx镜像的配置目录
        volumes:
            - ./www:/var/www/html 主机文件与容器文件映射共享,PHP代码存这里
        ports:
            - "80:80" ### 端口映射,如果你主机80端口被占用,可以用8000:80
            - "443:443"
        depends_on:
            - php-fpm ### 依赖并连接PHP容器,这样在Nginx容器就可以通过php-fpm作为主机名来访问PHP容器了        

相关文章

网友评论

      本文标题:K8S

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