zoukankan      html  css  js  c++  java
  • k8s 集群搭建

    一,环境介绍

      master node1 node2
    IP 192.168.0.164 192.168.0.165 192.168.0.167
    环境 centos 7 centos 7 centos 7

    二,配置安装

       三台节点操作实例:"

       01,配置yum源

    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

        02,安装ETCD

    yum install -y etcd
    

          节点加入:

    master节点加入:(IP 192.168.1.164)

    etcd -name infra1 -initial-advertise-peer-urls http://192.168.0.164:2380 -listen-peer-urls http://192.168.0.164:2380 -listen-client-urls http://192.168.0.164:2379,http://127.0.0.1:2379 -advertise-client-urls http://192.168.0.164:2379 -initial-cluster-token etcd-cluster-1 -initial-cluster infra1=http://192.168.0.164:2380,infra2=http://192.168.0.165:2380,infra3=http://192.168.0.167:2380 -initial-cluster-state new

    node1节点加入:(IP 192.168.1.165)

    etcd -name infra2 -initial-advertise-peer-urls http://192.168.0.165:2380 -listen-peer-urls http://192.168.0.165:2380 -listen-client-urls http://192.168.0.165:2379,http://127.0.0.1:2379 -advertise-client-urls http://192.168.0.165:2379 -initial-cluster-token etcd-cluster-1 -initial-cluster infra1=http://192.168.0.164:2380,infra2=http://192.168.0.165:2380,infra3=http://192.168.0.167:2380 -initial-cluster-state new

    node2节点加入:(IP 192.168.1.167)

    etcd -name infra3 -initial-advertise-peer-urls http://192.168.0.167:2380 -listen-peer-urls http://192.168.0.167:2380 -listen-client-urls http://192.168.0.167:2379,http://127.0.0.1:2379 -advertise-client-urls http://192.168.0.167:2379 -initial-cluster-token etcd-cluster-1 -initial-cluster infra1=http://192.168.0.164:2380,infra2=http://192.168.0.165:2380,infra3=http://192.168.0.167:2380 -initial-cluster-state new

          ECTD节点检查:

      启动后另起一个窜口输入命令

     etcdctl cluster-health

        说明成功

          节点管理:(更改ip即可完成多台)

          vim /usr/lib/systemd/system/etcd.service

    [Unit]
    Description=Etcd Server
    After=network.target
    After=network-online.target
    Wants=network-online.target
    
    [Service]
    Type=notify
    WorkingDirectory=/root
    ExecStart=etcd -name infra1 -initial-advertise-peer-urls http://192.168.0.164:2380 -listen-peer-urls http://192.168.0.164:2380 -listen-client-urls http://192.168.0.164:2379,http://127.0.0.1:2379 -advertise-client-urls http://192.168.0.164:2379 -initial-cluster-token etcd-cluster-1 -initial-cluster infra1=http://192.168.0.164:2380,infra2=http://192.168.0.165:2380,infra3=http://192.168.0.167:2380 -initial-cluster-state new
    Restart=on-failure
    LimitNOFILE=65536
    
    [Install]
    WantedBy=multi-user.target

         

    #!/bin/bash
    echo '################ Prerequisites...'
    systemctl stop firewalld
    systemctl disable firewalld
    yum -y install ntp
    systemctl start ntpd
    systemctl enable ntpd
    
    echo '################ Installing flannel...'
    #安装flannel
    yum install flannel -y
    
    echo '################ Add subnets for flannel...'
    A_SUBNET=172.17.0.0/16
    B_SUBNET=192.168.0.0/16
    C_SUBNET=10.254.0.0/16
    
    FLANNEL_SUBNET=$A_SUBNET
    SERVICE_SUBNET=$B_SUBNET
    OCCUPIED_IPs=(`ifconfig -a | grep 'inet ' | cut -d ':' -f 2 |cut -d ' ' -f 1 | grep -v '^127'`)
    for ip in ${OCCUPIED_IPs[@]};do
        if [ $(ipcalc -n $ip/${A_SUBNET#*/}) == $(ipcalc -n ${A_SUBNET}) ];then
            FLANNEL_SUBNET=$C_SUBNET
            SERVICE_SUBNET=$B_SUBNET
            break
        fi
        if [ $(ipcalc -n $ip/${B_SUBNET#*/}) == $(ipcalc -n ${B_SUBNET}) ];then
            FLANNEL_SUBNET=$A_SUBNET
            SERVICE_SUBNET=$C_SUBNET
            break
        fi
        if [ $(ipcalc -n $ip/${C_SUBNET#*/}) == $(ipcalc -n ${C_SUBNET}) ];then
            FLANNEL_SUBNET=$A_SUBNET
            SERVICE_SUBNET=$B_SUBNET
            break
        fi
    done
    
    while ((1));do
        sleep 2
        etcdctl cluster-health
        flag=$?
        if [ $flag == 0 ];then
    etcdctl mk /coreos.com/network/config '{"Network":"'${FLANNEL_SUBNET}'"}'
            break
        fi
    done
    
    echo '################ Starting flannel...'
    echo -e "FLANNEL_ETCD="http://192.168.0.164:2379,http://192.168.0.165:2379,http://192.168.0.167:2379"
    FLANNEL_ETCD_KEY="/coreos.com/network"" > /etc/sysconfig/flanneld
    systemctl enable flanneld
    systemctl start flanneld
    
    echo '################ Installing K8S...'
    yum -y install kubernetes
    echo 'KUBE_API_ADDRESS="--address=0.0.0.0"
    KUBE_API_PORT="--port=8080"
    KUBELET_PORT="--kubelet_port=10250"
    KUBE_ETCD_SERVERS="--etcd_servers=http://192.168.0.164:2379,http://192.168.0.165:2379,http://192.168.0.167:2379"
    KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range='${SERVICE_SUBNET}'"
    KUBE_ADMISSION_CONTROL="--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
    KUBE_API_ARGS=""' > /etc/kubernetes/apiserver
    
    echo '################ Start K8S components...'
    for SERVICES in kube-apiserver kube-controller-manager kube-scheduler; do
        systemctl restart $SERVICES
        systemctl enable $SERVICES
        systemctl status $SERVICES
    done
    
    
    
    
    
    
    #!/bin/bash
    
    echo '################ Prerequisites...'
    #关闭firewall 开启ntp时间同步
    systemctl stop firewalld
    systemctl disable firewalld
    yum -y install ntp
    systemctl start ntpd
    systemctl enable ntpd
    
    #安装kubernetes所需要的几个软件
    yum -y install kubernetes docker flannel bridge-utils
    
    
    #此处使用了一个vip 命名为vip 实际部署时需要替换为你的集群的vip 使用此ip的服务有 kube-master(8080) registry(5000) skydns(53)
    
    echo '################ Configuring nodes...'
    echo '################ Configuring nodes > Find Kube master...'
    KUBE_REGISTRY_IP="192.168.0.169"
    KUBE_MASTER_IP="192.168.0.170"
    echo '################ Configuring nodes > Configuring Minion...'
    echo -e "KUBE_LOGTOSTDERR="--logtostderr=true"
    KUBE_LOG_LEVEL="--v=0"
    KUBE_ALLOW_PRIV="--allow_privileged=false"
    KUBE_MASTER="--master=http://${KUBE_MASTER_IP}:8080"" > /etc/kubernetes/config
    echo '################ Configuring nodes > Configuring kubelet...'
    #取每个node机器的eth0的ip作为标识
    KUBE_NODE_IP=`ifconfig eth0 | grep "inet " | awk '{print $2}'`
    
    #api_servers 使用master1 master2 master3的ip数组形式
    echo -e "KUBELET_ADDRESS="--address=0.0.0.0"
    KUBELET_PORT="--port=10250"
    KUBELET_HOSTNAME="--hostname_override=${KUBE_NODE_IP}"
    KUBELET_API_SERVER="--api_servers=http://192.168.0.164:8080,http://192.168.0.165:8080,http://192.168.0.167:8080"
    KUBELET_ARGS="--cluster-dns=vip --cluster-domain=k8s --pod-infra-container-image=${KUBE_REGISTRY_IP}:5000/pause:latest"" > /etc/kubernetes/kubelet
    
    
    #flannel读取etcd配置信息 为本机的docker0分配ip 保证node集群子网互通
    echo '################ Configuring flannel...'
    echo -e "FLANNEL_ETCD="http://192.168.0.162:2379,http://192.168.0.165:2379,http://192.168.0.167:2379"
    FLANNEL_ETCD_KEY="/coreos.com/network"" > /etc/sysconfig/flanneld
    
    
    echo '################ Accept private registry...'
    echo "OPTIONS='--selinux-enabled --insecure-registry ${KUBE_REGISTRY_IP}:5000'
    DOCKER_CERT_PATH=/etc/docker" > /etc/sysconfig/docker
    
    echo '################ Start K8S Components...'
    systemctl daemon-reload
    for SERVICES in kube-proxy flanneld; do
        systemctl restart $SERVICES
        systemctl enable $SERVICES
        systemctl status $SERVICES
    done
    
    echo '################ Resolve interface conflicts...'
    systemctl stop docker
    ifconfig docker0 down
    brctl delbr docker0
    
    echo '################ Accept private registry...'
    echo -e "OPTIONS='--selinux-enabled --insecure-registry ${KUBE_REGISTRY_IP}:5000'
    DOCKER_CERT_PATH=/etc/docker" > /etc/sysconfig/docker
    
    for SERVICES in docker kubelet; do
        systemctl restart $SERVICES
        systemctl enable $SERVICES
        systemctl status $SERVICES
    done
  • 相关阅读:
    get 传 json 数据
    go text/template html/template invalid memory address or nil pointer dereference
    (转)go语言变参,匿名函数的多种用法
    shell 定义变量 坑
    python3 使用aria2下载的一个脚本
    python3 selenium 超时停止加载,并且捕捉异常, 进行下一步【亲测有效】
    selenium学习笔记——driver.get(url) 页面加载时间太长
    python Selenium chromedriver 自动化超时报错:你需要使用多标签保护罩护体
    selenium等待
    小数据池与代码块
  • 原文地址:https://www.cnblogs.com/kingle-study/p/10421290.html
Copyright © 2011-2022 走看看