zoukankan      html  css  js  c++  java
  • Centos7手工安装Kubernetes集群

    安装Kubernetes集群有多种方式,前面介绍了Kubeadm的方式,本文将介绍手工安装的方法。

    安装环境有3台Azure上的VM:

    Hkube01:10.0.1.4
    Hkube02:10.0.1.5
    Hbube03:10.0.1.6

    其中hkube01是Master节点,将会安装docker, etcd, Kubernetes master, flannel所需要的组件;

    Hkube02和hkube03是worker节点,将会安装docker, kubernetes node, flannel所需要的组件。

    安装过程如下:

    一 master节点

    1 安装软件

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

    [kubernetes] name
    =Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF
    yum install -y docker etcd kubernetes-master

    2 配置启动docker

    由于docker-hub的站点在国外,下载会非常慢,把docker下载指向国内的镜像站点:

    vim /etc/docker/daemon.json
    {"registry-mirrors": ["registry.docker-cn.com"]}
    systemctl enable docker
    systemctl start docker

    3 配置启动etcd

    Etcd和zookeeper类似,是存储key/value的工具。

    cd /etc/etcd
    vim etcd.conf
    
    ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
    ETCD_NAME="master"
    ETCD_ADVERTISE_CLIENT_URLS=http://10.0.1.4:2379
    
    systemctl enable etcd
    systemctl start etcd

    4 配置kubernetes

    在/etc/kubernetes目录中,有4个配置文件:

    需要配置apiserver和config两个配置文件。Controller-manager和scheduler不需要配置。

    配置apiserver,需要指定etcd地址、api-server的端口、提供服务的地址和cluster的ip范围:

    vim /etc/kubernetes/apiserver
    
    KUBE_API_PORT="--port=8080"
    KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
    KUBE_ETCD_SERVERS="--etcd-servers=http://10.0.1.4:2379"
    KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.0.0.0/16"
    KUBE_ADMISSION_CONTROL="--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota"

    本文不设计Kubernetes的安全问题,所以在api-server的配置中的admission_control中去掉了和安全相关的内容SecurityContextDeny,ServiceAccount。

     配置config,需要指定kubernetes master的地址和端口:

    vim /etc/kubernetes/config
    
    KUBE_MASTER="--master=http://10.0.1.4:8080"

    5 启动服务

    systemctl enable kube-apiserver kube-controller-manager kube-scheduler
    systemctl start kube-apiserver kube-controller-manager kube-scheduler
    systemctl status kube-apiserver kube-controller-manager kube-scheduler

    二 node节点

    1 安装软件

    yum install -y docker kubernetes-node

    2 配置启动docker

    和master节点相同:

    vim /etc/docker/daemon.json
    {"registry-mirrors": ["registry.docker-cn.com"]}
    systemctl enable docker
    systemctl start docker

    3 配置kubelet

    在/etc/kubernetes下有3个配置文件:

    需要配置config和kubelet两个配置文件,proxy是kube-proxy的配置文件,保留默认就可以。

    配置config,需要指定kubernetes master的地址和端口:

    vim /etc/kubernetes/config
    KUBE_MASTER="--master=http://10.0.1.4:8080"

    配置kubelet,指定其工作地址、本机注册到master时的名称、master的地址和端口:

    vim /etc/kubernetes/kubelet
    
    KUBELET_ADDRESS="--address=0.0.0.0"
    KUBELET_HOSTNAME="--hostname-override=hkube02"
    KUBELET_API_SERVER="--api-servers=http://10.0.1.4:8080"

    另外由于centos的yum源指定的pod-infrastructure的docker镜像需要redhat的证书,会导致安装不成功。为避免这个问题,我们把kubelet中的这个镜像更改成docker-hub中的镜像。

    先搜索一下:

    docker search pod-infrastructure

    选择一个更改,我选择了最后一个:

    KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image= docker.io/zengshaoyong/pod-infrastructure:latest "

    4 启动服务

    systemctl enable kubelet kube-proxy
    systemctl start kubelet kube-proxy
    systemctl status kubelet kube-proxy

    5 检查

    在master节点上查看:

    已经看到hkube02和hkube03都注册上来了。

    创建一个deployment:

    kubectl run nginx --image=nginx

    kubectl scale deployment nginx --replicas=3

    但网络层面pod只能和本node的其他pod连通。

     

    三 网络

    本文将安装flannel,实现跨节点的容器互通。

    1 安装

    yum install -y flannel

    2 配置

    在master节点进行Etcd的配置:

    etcdctl set /coreos.com/network/config '{"Network":"192.168.0.0/16"}'

    在所有node节点上配置flannel配置文件:

    vim /etc/sysconfig/flanneld

    systemctl enable flanneld
    systemctl start flanneld
    systemctl restart docker

    开启转发:

    iptables -P FORWARD ACCEPT

    此时可以看到docker0的地址和flannel的端口地址网段相同:

    3 验证

    部署pod nginx:

    kubectl run nginx --image nginx
    kubectl scale deployment nginx --replicas=3

    登录到hkube03,进入到容器:

    通过部署flannel,可以实现各个pod间的网络互通。

    总结:

    在Centos7上,通过yum安装Kubernetes的各个组件,实现Kubernetes的集群部署。

  • 相关阅读:
    Python 实例、类方法和静态方法
    allure生成测试报告,index.html页面内容为空
    【UOJ567】【IOI2020】Biscuits(DP)
    【BZOJ2410】Nim游戏(博弈论)
    【洛谷4351】[CERC2015] Frightful Formula(坐标系走路)
    【洛谷3581】[POI2015] CZA(DP)
    【LOJ117】有源汇有上下界最小流
    【洛谷6915】[ICPC2015 WF] Weather Report(哈夫曼树)
    【洛谷6152】[集训队作业2018] 后缀树节点数(SAM+LCT)
    【CF1349D】Slime and Biscuits(势能函数)
  • 原文地址:https://www.cnblogs.com/hengwei/p/9093919.html
Copyright © 2011-2022 走看看