微信二维码

二维码 扫二维码马上关注
扫码咨询
在阿里云上自建的Kubernetes

        阿里云为Kubernetes提供的云容器服务是与Kubernetes兼容的全托管服务,帮助用户专注于自己的应用程序,而不是管理容器基础设施。在阿里云上部署Kubernetes有两种方式,一种是通过容器服务(内置),另一种是通过弹性计算服务(ECS)实例(自建)。如果您不确定哪种安装方法更适合您的需要,请参考阿里云Kubernetes与自建Kubernetes的文档。

        在很大程度上,选择阿里云容器服务是首选,因为它节省了时间,降低了维护Kubernetes集群的复杂性。然而,在某些情况下,手动安装可能更适合您的需要。在本文中,我们将使用Linux风格(Centos7和Ubuntu 16.04)在阿里云弹性计算服务实例上建立一个自建的kubernetes。

 

一、先决条件

        1、首先,你需要注册一个阿里云账户并登陆(购买阿里云产品可以先领取阿里云代金券阿里云学生优惠券)

        2、运行Ubuntu 16.04或RHEL7或Centos7的ECS实例。您可以选择您喜欢的区域和配置;这不会影响服务器设置的结果。
        3、
服务器的sudo密码。


二、Kubernetes安全组设置

        1、这些必需的端口需要在pod安全组中打开,以便:

        2、登录到ECS控制台。

        3、选择一个地区。
        4、
在左侧导航窗格中,选择network & Security并选择Security Group。

        5、单击Create Security Group。

 

        为pod网络设置入站规则,如下所示。例如,192.168.0.0/16是pod网络IP地址;你需要把它换成你自己的。
 

 
授权对象 协议类型 端口范围 访问控制策略
192.168.0.0/16 TCP
6443/6443
允许
192.168.0.0/16 TCP 2379/2379 允许
192.168.0.0/16 TCP 2380/2380 允许
192.168.0.0/16 TCP 10250/10250 允许
192.168.0.0/16 TCP 10251/10251 允许
192.168.0.0/16 TCP 10252/10252 允许
0.0.0.0/0 TCP 22/22 允许

6443/6443

        注意:

 

        1、阿里云集装箱服务和pod CIDR区块不能与VPC CIDR区块重叠。
        2、
服务CIDR块不能与VPC CIDR块或pod CIDR块重叠。

        3、安全组规则支持kubernetes主机和集群之间的通信。

        连接到您的阿里云服务器

 

        找到与您的阿里云ECS实例关联的互联网IP地址(公共IP地址)。还有其他方法可以连接到ECS实例。访问官方ECS文档了解更多信息。

 

        在继续之前,请停止并检查是否:
        1、
启用ECS公共IP。

        2、ECS已经启动并运行。
        3、
ECS安全组指向播客安全组。

        4、ECS安全组授权对象与ECS实例匹配。


三、设置环境

 

        本例使用了阿里云Could环境中运行的两个ECS实例,并使用了这些主机名
 

 
主服务器的名字 集群
kube-master kube-minion-1


        安装Kubernetes-master和Kubernetes-minion

 

        这些是设置kubernetes ECS实例主服务器和仆从服务器的最低要求。
 

必要条件 Kubernetes-master Kubernetes-minion
  • 禁用系统交换和SELinux

Y Y
  • 从/etc/fstab中删除任何交换条目

Y Y
net.bridge。bridge-nf-call-iptables被设置为1 Y Y
  • 安装Docker并在重启时启用

Y Y
  • 安装kubeadm

Y Y
  • 安装kubelet

Y N
  • 安装kubectl

Y N
  • 配置码头工人cgroupsfs

Y N
  • 创建网络插件

Y N

        禁用带有swapoff -a的系统交换。这将立即禁用swap并从/etc/fstab中删除任何交换条目

 

        通过setenforce 0禁用SE Linux

 

        您应该确保net.bridge。在sysctlconfig中将bridge-nf-call-iptables设置为1

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

       如果您正在运行CentOS或RHEL7,请安装Docker并在重新启动时启用这些命令。

yum -y update
yum install -y docker 

        如果您正在运行Ubuntu,安装Docker并在重启时使用以下命令启用。

apt-get update 
apt-get install -y docker.io

        启动并启用Docker,并检查Docker服务是否正在运行。

systemctl start docker
systemctl enable docker
systemctl status docker

        安装Kubernetes

 

        你需要在你所有的机器上安装这些软件包:

 

        1、kubeadm:引导集群的命令。

        2、kubelet:运行在集群中所有机器上的组件,执行启动pods和容器等操作。
        3、
kubectl:命令行util与集群通信。

        4、Kubernetes安装在CentOS7/RHEL7上

 

        设置Kubernetes yum存储库

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
  • 在CentOS7/RHEL7中安装Kubernetes

    yum install -y kubelet kubeadm kubectl

        Kubernetes安装在Ubuntu上

 

        为Ubuntu设置Kubernetes apt库

apt-get install -y apt-transport-https curl
apt-get install -y docker.io
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
  •         在Ubuntu中安装Kubernetes

    apt-get install -y kubelet kubeadm kubectl

        运行Kubernetes

 

        启用和启动kublet

systemctl enable kubelet  
systemctl start kubelet

        验证Docker cgroup驱动程序是否匹配kubelet配置:(kube-master节点)

docker info | grep -i cgroup
Cgroup Driver: cgroupfs

        cgroup驱动器的配置位于/etc/systemd/system/kubelet.service.d/10-kubead .conf中

[Service]
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=cgroupfs"

        重新加载守护进程并重启kubelet: (kube-master节点)

systemctl daemon-reload
systemctl restart kubelet

        刷新重置Kubernetes组件(这将删除所有集群配置,如果存在的话,在配置创建之后不要运行它)

kubeadm reset -f 

        建立Kubernetes网络添加

 

        1、要使法兰绒正确工作,—pod-network-cidr=10.244.0.0/16必须传递给kubeadm init。
        2、
要使Calico正确工作,—必须将—pod-net -cidr=192.168.0.0/16传递给kubeadm init。

        创建法兰绒网络

 

        注意:apiserver- advertising -address是kube-master的IP

kubeadm init --service-cidr 10.96.0.0/12 --kubernetes-version v1.11.0 --pod-network-cidr 10.244.0.0/16 --apiserver-advertise-address 192.168.1.130

        您应该获得关于作为普通用户启动命令的信息,以及需要部署的网络以及如何将工作节点连接到集群的信息。

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

You can now join any number of machines by running the following on each node
as root:
  •         加入集群(kube-minnion)

kubeadm join 192.168.1.130:6443 --token 5m8qxr.46rpadiwt8fcka0v --discovery-token-ca-cert-hash sha256:b05a0b8849a57432247c06200864f5ce99d40ffdcae965293c0026204ef33da4

        运行kubectl获取主机上的节点,查看这个节点是否加入集群。让集群处于就绪状态只需几秒钟

root@kube-master:kubectl get nodes
NAME          STATUS    ROLES     AGE       VERSION
kube-master   Ready     master    2m        v1.11.0
kube-minion   Ready     <none>    47s       v1.11.0
  •         应用法兰绒插件

    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml
  •         你会得到这样的输出

    clusterrole.rbac.authorization.k8s.io/flannel created
    clusterrolebinding.rbac.authorization.k8s.io/flannel created
    serviceaccount/flannel created
    configmap/kube-flannel-cfg created
    daemonset.extensions/kube-flannel-ds created
    •         启动并重启kubelet引擎

      systemctl restart kubelet
      systemctl status kubelet

            验证安装

     

            验证集群信息

    root@kube-master: kubectl cluster-info 
    Kubernetes master is running at https://192.168.1.132:6443
    KubeDNS is running at https://192.168.1.132:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

            验证服务

    root@kube-master:kubectl get services -n kube-system
    NAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
    kube-dns               ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP   2m

            创建令牌

    [root@kube-master ~]kubeadm token create 
    I0710 04:08:37.149017    8685 feature_gate.go:230] feature gates: &{map[]}
    d49l0d.mheeem1dkrw3n43

            就是这样!您已经成功地在阿里云上配置了一个自制的Kubernetes集群。想在阿里云上了解更多关于Kubernetes的信息,请关注阿里云容器服务。

    更多精彩内容,请关注
    元吉优惠券网:专注阿里云代金券阿里云服务器报价
    腾讯云代金券的免费领取!
    更多精彩内容推荐:

    阿里云服务器2折拼团购,拼着买更便宜 
    阿里云常见问题解答
    阿里云服务器操作方法(新手图文教程)
    阿里云学生服务器价格低至95元/年
    阿里云弹性裸金属服务器(神龙版)
     


在线客服
热线电话

扫一扫 微信加好友