zoukankan      html  css  js  c++  java
  • k8s集群部署

    环境:

    两台虚拟机,

    10.10.20.203 部署docker、etcd、flannel、kube-apiserver、kube-controller-manager、kube-scheduler

    10.10.20.206 部署docker、flannel、kubelet、kube-proxy

    注意:主机名不能有下划线,否则kubelet不能注册到master,执行kubectl get node,不会有任何返回。如果主机名不能修改,并且有下划线,就再kubelet的启动参数中增加--hostname-override,指定一个不带下划线的名字。

    【修改hosts文件】

    修改master机上的/etc/hosts文件,增加

    10.10.20.206 k8s-slave1-206

    【关闭防火墙】

    关闭所有服务器的防火墙,执行如下命令

    systemctl stop firewalld.service
    systemctl disable firewalld.service
    systemctl status firewalld.service

    【etcd】

    1、下载curl -L https://github.com/coreos/etcd/releases/download/v2.3.7/etcd-v2.3.7-linux-amd64.tar.gz -o etcd-v2.3.7-linux-amd64.tar.gz
    2、将etcd和etcdctl拷贝到/usr/bin下

    cp etcd /usr/bin/etcd
    cp etcdctl /usr/bin/etcdctl

    3、启动命令

    etcd --name etcd 
    --data-dir /var/lib/etcd 
    --listen-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001 
    --advertise-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001 
    >> /var/log/etcd.log 2>&1 &

    4、检查状态

    etcdctl -C http://localhost:4001 cluster-health

    输出如下信息,代表正常

    member ce2a822cea30bfca is healthy: got healthy result from http://0.0.0.0:2379
    cluster is healthy

    【k8s部署准备】

    1、下载编译好的k8s,文件比较大,1.38G,下载地址如下

    https://github.com/kubernetes/kubernetes/releases/download/v1.3.3/kubernetes.tar.gz

    2、解压/kubernetes/server/kubernetes-server-linux-amd64.tar.gz,将/kubernetes/server/kubernetes/server/bin目录下的可执行文件拷贝到/usr/bin,使用如下命令

    find ./ -perm 755 | xargs -i cp {} /usr/bin

    【kube-apiserver】

    kube-apiserver 
    --logtostderr=true --v=0 
    --etcd-servers=http://10.10.20.203:4001 
    --insecure-bind-address=0.0.0.0 --insecure-port=8080 
    --service-cluster-ip-range=10.254.0.0/16 
    >> /var/log/kube-apiserver.log 2>&1 &

    【kube-controller-manager】

    kube-controller-manager 
    --logtostderr=true --v=0 
    --master=http://10.10.20.203:8080 
    >> /var/log/kube-controller-manager.log 2>&1 &

    【kube-scheduler】

    kube-scheduler 
    --logtostderr=true --v=0 
    --master=http://10.10.20.203:8080 
    >> /var/log/kube-scheduler.log 2>&1 &

    【kube-proxy】

    kube-proxy 
    --logtostderr=true --v=0 
    --master=http://10.10.20.203:8080 
    >> /var/log/kube-proxy.log 2>&1 &

    【kubelet】

    kubelet 
    --logtostderr=true --v=0 
    --address=0.0.0.0 
    --api-servers=http://10.10.20.203:8080 
    --pod-infra-container-image=index.tenxcloud.com/google_containers/pause-amd64:3.0 
    >> /var/log/kubelet.log 2>&1 &

    【flannel】
    1、下载flannel https://github.com/coreos/flannel/releases/download/v0.5.5/flannel-0.5.5-linux-amd64.tar.gz
    2、解压
    3、将flanneld拷贝到/usr/bin

    cp flanneld /usr/bin

    4、配置网络(在master节点上执行一次即可,其他节点忽略此步骤)

    etcdctl -C http://10.10.20.203:4001 
    set /coreos.com/network/config '{"Network":"10.0.0.0/16"}'

    5、启动(在所有节点上都执行),执行了该指令后,会生成/run/flannel/subnet.env文件,启动docker的时候需要使用

    flanneld -etcd-endpoints=http://10.10.20.203:4001 
    >> /var/log/flanneld.log 2>&1 &

     6、删除之前通过yum安装docker时,创建的docker0网桥

    iptables -t nat -F
    ifconfig docker0 down
    brctl delbr docker0

    【docker】

    docker的安装就不介绍了,在安装k8s之前先通过yum安装的,因为要指定docker使用的网桥等信息,所以systemctl stop docker后,通过以下命令行的形式来启动

    source /run/flannel/subnet.env
    dockerd 
    -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 
    --bip=${FLANNEL_SUBNET} --mtu=${FLANNEL_MTU} 
    --insecure-registry 10.10.20.202 
    >> /var/log/docker.log 2>&1 &

    此时再查看网络情况,ifconfig

    docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            inet 10.0.77.1  netmask 255.255.255.0  broadcast 0.0.0.0
            ether 02:42:4f:38:38:39  txqueuelen 0  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    flannel0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1472
            inet 10.0.77.0  netmask 255.255.0.0  destination 10.0.77.0
            unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

    【杀进程】

    因为都是通过命令行的方式启动,所以停止的时候就直接杀进程了

    #杀docker
    ps -ef | grep docker | grep -v grep | awk '{print $2}' | xargs -i kill -9 {}
    #杀etcd
    ps -ef | grep etcd | grep -v grep | awk '{print $2}' | xargs -i kill -9 {}
    #杀k8s
    ps -ef | grep kube | grep -v grep | awk '{print $2}' | xargs -i kill -9 {}
    #杀flannel
    ps -ef | grep flannel | grep -v grep | awk '{print $2}' | xargs -i kill -9 {}

     

  • 相关阅读:
    媒体查询漫谈——@media Queries
    JavaScript工具函数集
    什么是BFC、IFC、GFC和FFC
    HTTP与HTTPS的区别
    reflow 和 repaint
    客户端检测
    ajax
    批量删除
    数据访问
    登录主页面代码
  • 原文地址:https://www.cnblogs.com/puroc/p/5764296.html
Copyright © 2011-2022 走看看