zoukankan      html  css  js  c++  java
  • 02: kubernetes安装

    参考官网:http://docs.kubernetes.org.cn/

    1.1 集群部署

      1、集群结构

    192.168.56.11 linux-node1 linux-node1.example.com  # master
    192.168.56.12 linux-node2 linux-node2.example.com  # node1
    192.168.56.13 linux-node3 linux-node3.example.com  # node2

      2、初始化环境

    '''1、关闭防火墙与内核'''
    [root@linux-node1 ~]# setenforce 0
    [root@linux-node1 ~]# sed -i "/^SELINUX/s/enforcing/disabled/" /etc/selinux/config
    [root@linux-node1 ~]# systemctl stop firewalld && systemctl disable firewalld
    
    '''2、配置hosts记录解析(三台机器都需要配置)'''
    [root@linux-node1 ~]# vi /etc/hosts
    '''
    192.168.56.11 linux-node1 linux-node1.example.com
    192.168.56.12 linux-node2 linux-node2.example.com
    192.168.56.13 linux-node3 linux-node3.example.com
    '''
    [root@linux-node1 ~]# scp /etc/hosts 192.168.56.12:/etc/
    [root@linux-node1 ~]# scp /etc/hosts 192.168.56.13:/etc/
    
    '''3、添加kubernetes镜像,阿里云yum源'''
    [root@linux-node1 ~]# vi /etc/yum.repos.d/kubernetes.repo
    '''
    [kubernetes]
    name=kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    '''
    
    '''4、下载docker镜像,阿里云yum源(三台机器都需要配置)'''
    [root@linux-node1 ~]# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    '''5、将192.168.56.11中生成的kubernetes.repo和docker-ce.repo YUM源复制到另外两台机器 ''' [root@linux-node1 ~]# scp /etc/yum.repos.d/{kubernetes.repo,docker-ce.repo} 192.168.56.12:/etc/yum.repos.d/ [root@linux-node1 ~]# scp /etc/yum.repos.d/{kubernetes.repo,docker-ce.repo} 192.168.56.13:/etc/yum.repos.d/

      3、软件安装:docker-ce   kubeadm    kubectl   kubelet

    '''1、软件安装docker-ce kubeadm kubectl kubelet(三台机器都要安装)'''
    [root@linux-node1 ~]# yum -y install kubeadm-1.11.2 kubectl-1.11.2 kubelet-1.11.2 docker-ce
    [root@linux-node1 ~]# systemctl enable docker kubelet  # 设置开机自启动
    [root@linux-node1 ~]# systemctl start docker
    [root@linux-node1 ~]# systemctl status docker
    ### 注:如果报错:rpm -Va --nofiles --nodigest  (清空yum缓存并更新域名源)
    ### yum clean all && rpm --rebuilddb && yum -y update
    
    
    '''2、配置镜像加速器:https://www.daocloud.io/mirror(三台机器都要安装)'''
    [root@linux-node2 ~]#  curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io       
    [root@linux-node2 ~]#  cat /etc/docker/daemon.json           # 执行上面命令后就会将镜像源修改成国内的地址
     {"registry-mirrors": ["http://f1361db2.m.daocloud.io"]}
    [root@linux-node2 ~]# systemctl restart docker               # 重启docker生效
    
    '''3、先拉取镜像,如果有代理服务器,则不需要(三台机器都要拉取)'''
    # curl https://raw.githubusercontent.com/aishangwei/kubernetes/master/scripts/pull_k8s_cluster_img.sh | bash

                  

      4、关闭系统交互分区(由于k8s不兼容交换分区)

    '''三台机器都有关闭交换分区  '''
    [root@linux-node1 ~]# swapoff -a [root@linux-node1 ~]# vim /etc/fstab #/dev/mapper/centos-swap .... # 注释掉交互分区

      5、安装master(只需在master机器:192.168.56.11机器执行)

    '''1. 使用kubernetes镜像安装master '''
    ###注:默认的dns地址为10.96.0.10 ,修改 service- cidr有可能导致无法解析
    [root@linux-node1 ~]# kubeadm init --kubernetes-version=v1.11.2 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=all
    --kubernetes-version=v1.11.2  # 指定kuberrnetes版本
    --pod-network-cidr=10.244.0.0/16  # 指定 Pod 网络的范围
    --service-cidr=10.96.0.0/12  # 指定service网络范围
    --ignore-preflight-errors=all # 忽略版本报错
    ''' # 注:一定要记得把下面的信息保留,node加入master时需要此命令
    kubeadm join 192.168.56.11:6443 --token awp38q.08w9u2ulo11hxl69 --discovery-token-ca-cert-hash sha256:c3892c27bb7d4cfd2cf90aaa34ff8e1b3dbd6620a24e13acf684673c02eb7419 --ignore-preflight-errors=all
    ''' '''2. 把认证配置文件拷贝到当前用户下,这样使用kubectl才能操作我们的集群 ''' [root@linux-node1 ~]# mkdir -p $HOME/.kube [root@linux-node1 ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config # 拷贝管理员配置文件 [root@linux-node1 ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config # 更改config配置文件权限 '''3. Master安装完成后使用下面命令查看集群信息 ''' [root@linux-node1 ~]# kubectl get cs # 获取集群状态 [root@linux-node1 ~]# kubectl get componentstatus # 查看Master状态 [root@linux-node1 ~]# kubectl get nodes # 查看节点信息 [root@linux-node1 ~]# kubectl get pods -n kube-system # master显示未准备好状态,因为是没有安装flannel [root@linux-node1 ~]# kubectl get ns # 查看命名空间(NameSpace)

      6、安装 Flannel 网络插件(只需在master机器:192.168.56.11机器执行)

    ### 注意:需要 kubeadm init 时设置 --pod-network-cidr=10.244.0.0/16
    '''1. 安装 Flannel 网络插件 '''
    [root@linux-node1 ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    
    '''2. 可以看到master节点已经变成Ready状态 '''
    [root@linux-node1 ~]# kubectl get node
    NAME                      STATUS    ROLES     AGE       VERSION
    linux-node1.example.com   Ready     master    13m       v1.11.2
    
    '''3. 可以看到pods都变running状态 '''
    [root@linux-node1 ~]# kubectl get pods -n kube-system 
    NAME READY STATUS RESTARTS AGE
    coredns-78fcdf6894-97mq2 1/1 Running 0 11m
    coredns-78fcdf6894-cgmk7 1/1 Running 0 11m

       7、将node节点加入master(在其他两台node节点中执行)

    '''1. 在192.168.56.12和192.168.56.13中执行命令加入master '''
    ### 语法:kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-certhash sha256:<hash>
    [root@linux-node1 ~]# kubeadm join 192.168.56.11:6443 --token awp38q.08w9u2ulo11hxl69 --discovery-token-ca-cert-hash sha256:c3892c27bb7d4cfd2cf90aaa34ff8e1b3dbd6620a24e13acf684673c02eb7419 --ignore-preflight-errors=all
    
    '''2. 执行完成后在master(192.168.56.11)看两台node节点接入状态  '''
    [root@linux-node1 ~]# kubectl get nodes              
    NAME                      STATUS    ROLES     AGE       VERSION
    linux-node1.example.com   Ready     master    39m       v1.11.2
    linux-node2.example.com   Ready     <none>    3m        v1.11.2
    linux-node3.example.com   Ready     <none>    2m        v1.11.2

     1.2 在k8s机器中创建pod

      1、使用命令创建pod

    '''1. 使用命令在集群中创建一个nginx镜像容器 '''
    [root@linux-node1 ~]# kubectl run nginx --replicas=1 --labels="app=example" --image=nginx:1.10 --port=80
    –replicas:指定副本数 
    nginx:名称 
    –labels:标签 
    –image:使用的镜像(默认从dockerhub拉取) 
    –port:容器的端口
    [root@linux-node1 ~]# kubectl get pods  # 获取默认namaspace(default)下的pod
    NAME                    READY     STATUS    RESTARTS   AGE
    nginx-c65569d85-667bn   1/1       Running   0          7m
    [root@linux-node1 ~]# kubectl describe pod nginx-c65569d85-667bn  # 查看指定镜像详细信息
    [root@linux-node1 ~]# kubectl delete deployment nginx-c65569d85-667bn  # 删除指定pod

      2、通过声明式语法定义Pods

    ### vim db.yml
    ### kubectl explain pod  # 查看下面参数意义
    apiVersion: v1  # 描述版本 (查看版本号命令:kubectl api-versions)
    kind: Pod  # 资源类型
    metadata:  # 原数据
      name: db  # pod名称
      labels:  # 便签名称
        type: db  # 值是db
        vendor: MongoLabs  # 标签
    spec: # 描述容器信息
      containers:  # 指容器
      - name: db  # 指定pod里的一个db容器
        image: mongo:3.3  # 镜像名称
        command: ["mongod"]  # 执行的命令
        args: ["--rest", "--httpinterface"]  # 执行启动命令的参数
    '''1. 使用申明式语法创建pod并查看pod详细信息 '''
    [root@linux-node1 ~]# vi db.yml  # 新建定义pod文件
    [root@linux-node1 ~]# kubectl create -f db.yml  # 使用db.yml创建pod
    [root@linux-node1 ~]# kubectl get pods  # 查看创建的pod信息
    [root@linux-node1 ~]# kubectl get pods -o wide  # 显示pod详细信息
    [root@linux-node1 ~]# kubectl get pods -o json  # 以json格式显示pod信息
    [root@linux-node1 ~]# kubectl describe pod db  # 查看 pod名称为db的描述信息
    [root@linux-node1 ~]# kubectl delete pod db # 使用yml安装的pod可以直接使用此命令删除

    11111111111111

  • 相关阅读:
    网站SEO优化问答精选
    用eclipse怎样将本地的项目打成jar包上传到maven仓库
    查询linux机器的公网ip
    Srping mvc mabatis 报错 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
    使用SecureCRT的SFTP在WINDOWS与LINUX之间传输文件(转载)
    苹果手机如何减少后台流量
    《图解CSS3——第4章 CSS3背景-2》
    《图解CSS3——第4章 CSS3背景-1》
    《图解CSS3——第3章 CSS3边框-4》
    《图解CSS3——第3章 CSS3边框-3》
  • 原文地址:https://www.cnblogs.com/xiaonq/p/11306066.html
Copyright © 2011-2022 走看看