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的集群部署。

  • 相关阅读:
    Add Two Numbers
    Reverse Linked List II
    Reverse Linked List
    Remove Duplicates from Sorted List
    Remove Duplicates from Sorted List II
    Partition List
    Intersection of Two Linked Lists
    4Sum
    3Sum
    2Sum
  • 原文地址:https://www.cnblogs.com/hengwei/p/9093919.html
Copyright © 2011-2022 走看看