zoukankan      html  css  js  c++  java
  • centos7下kubernetes(3。部署kubernetes)

    环境:三个centos7

    K8s2是Master;K8s1是node1;K8s3是node2

    官方文档:https://kubernetes.io/docs/setup/independent/install-kubeadm/

    注意:kubernetes几乎所有的安装组件和docker 镜像都放在goolge自己的网站上

    安装docker

    所有节点都安装docker:可利用docker-machine安装;可参考:https://www.cnblogs.com/lkun/p/7655495.html

    所有节点关闭swap:swapoff -a 这个如果不关闭的话在初始化集群的时候会报错(如果重启机器,需要重新关闭)

    所有节点设置内核参数:为了支持桥接

    cat <<EOF >  /etc/sysctl.d/k8s.conf

    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    sysctl -p

    所有节点 配置k8S源

    cat <<EOF > /etc/yum.repos.d/kubernetes.repo

    [kubernetes]
    name=Kubernetes
    baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    repo_gpgcheck=0
    gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
           http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF
     

    所有节点安装kubelet,kubeadm,kubectl

    kubelet运行在cluster所有节点上,负责启动容器和Pod

    kubeadm用于初始化Cluster

    kubectl是Kubernetes命令行工具。通过kubectl可以部署和管理应用,查看各种资源,创建,删除和更新各种组件

     
    安装kubelet,kubeadm,kubectl
    yum install  kubelet kubeadm kubectl --disableexcludes=kubernetes
    安装完成之后不需要手动启动服务,服务会在初始化的时候自动启动。
     
    配置集群初始化的配置文件(master上)
    vim /etc/kubernetes/kubeadm.conf
    apiVersion: kubeadm.k8s.io/v1alpha1
    kind: MasterConfiguration
    kubernetesVersion: v1.11.2
    imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
    #api:
      #controlPlaneEndpoint: internal-bgc-ops-test-k8s-lb-505377916.cn-northwest-1.elb.amazonaws.com.cn
    apiServerCertSANs:
    - K8S3
    - K8S1
    - 192.168.7.93
    - 192.168.7.235
    #- internal-bgc-ops-test-k8s-lb-505377916.cn-northwest-1.elb.amazonaws.com.cn
    networking:
      podSubnet: 10.244.0.0/16
    #etcd:
     # endpoints:
      #- http://192.168.7.93:2379
      #- http://192.168.7.235:2379
      #dataDir: /var/lib/etcd
     
     
     
    所有节点配置 /etc/sysconfig/kubelet         只在国内需要配置,让kubelet从国内的镜像仓库拉取pause镜像,否则默认从Google的镜像仓库拉取,会无法访问
    vim    /etc/sysconfig/kubelet
    KUBELET_EXTRA_ARGS=--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.1

    在master1上执行初始化

    kubeadm init --config /etc/kubernetes/kubeadm.conf

     node节点加入集群:在node节点上执行master初始化之后最后提示的命令;

    在node节点上执行master初始化之后最后提示的命令;

    如果没保存,可以尝试以下命令

    先在master 上通过kubeadm token list查看token

    然后在node上执行:kubeadm join token 192.168.7.78:6443 i9gsiq.c3pr5uocthnbeacf  --discovery-token-unsafe-skip-ca-verification(允许 在没有--discovery-token-ca-cert-hash的情况下进行连接)

     在master上查看节点情况: kubectl get node

     

     目前还处于NotReady,继续下面步骤部署pod网络

     部署pod网络

    kubenetes cluster需要安装Pod网络,才能进行通信,否则不通。

    kubenetes支持很多中网络方案,在这里选择flannel。

    在master上安装flannel

    wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

    vim   kube-flannel.yml     修改kube-flannel.yml与/etc/kubernetes/kubeadm.conf一致

    export KUBECONFIG=/etc/kubernetes/admin.conf   

        将master与本机的IP进行绑定,可以用 kubectl cluster-info进行查看,如果不设置,默认master是与本机的localhost:8080绑定的,8080本身没有启动,所以会报错

    报错:The connection to the server localhost:8080 was refused - did you specify the right host or port?

     kubectl create -f kube-flannel.yml     确认资源

    设置完pod网络之后在master查看node状态:

    如果依然有node处于NotReady的状态

    通过以下方法排查:

     kubectl get pod --all-namespaces  (查看pod的运行状况,除了Running的状态,其余全部不正常)

    查看运行不正常的pod的原因

     describe pod kube-flannel-ds-amd64-qlgtn  --namespace=kube-system  (命令输出的最后一行)

    出现这个问题是由于我在node2上面在配置/etc/sysconfig/kubelet国内源的时候配置错误,按照之前上面的步骤进行配置

    我的解决办法是:重新配置/etc/sysconfig/kubelet

                                  在node2上执行    kubeadm   reset

                                  在master上面执行 kubectl delete node {nodename}

                                 然后在node2上面重新加入集群    

    以下配置为master的高可用配置,如果是单机版,可以忽略

    将 master上的 /etc/kubernetes/pki 及 /etc/kubernetes/kubeadm.conf 拷贝至两个master上

    在两个master上分别执行   kubeadm init --config /etc/kubernetes/kubeadm.conf

     
     
     
  • 相关阅读:
    linq 查询-“必须是可缩小的节点”
    在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。”
    将字符串转换为double类型的list
    mysql新增用户无法授权!? 解决方案
    eclipse项目有红色感叹号
    错误: 找不到或无法加载主类 java操作hbase出错
    org.apache.hadoop.conf.Configuration无法引用 解决方法
    jdbc的数据库驱动类DriverManager.getConnection()详解
    MySQL [Err] 1055--1064
    控制反转
  • 原文地址:https://www.cnblogs.com/lkun/p/8092617.html
Copyright © 2011-2022 走看看