使用kubeadm在线安装多节点集群

1.安装Docker和Kubenetes

禁用SELinux

#这个设置在重启后失效
setenforce 0
#要永久禁用需要修改/etc/selinux/config文件
将SELINUX=enforcing改为SELINUX=permissive

禁用防火墙

systemctl disable firewalld && systectl stop firewalld

在yum仓库中添加kubenetes的国内源

$ cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安装Docker,Kubelet,Kubeadm,Kubectl,Kubernetes-CNI

yum install -y docker kubelet kubeadm kubectl kubernetes-cni

设置开机启动Docker,Kubelet

systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet
启用NET.BRIDGE.BRIDGE-NF-CALL-IPTABLES内核选项
    有些东西会禁用bridge-nf- call- iptables内核参数, 而这是Kubernetes 服务正常运行所必需的 。为了纠正这个 问题, 需要运行 以下两个 命令:
sysctl -w net.bridge.bridge-nf-call-iptables=l
echo "net.bridge.bridge-nf-call-iptables=l"> /etc/sysctl.d/k8s.conf
禁用交换分区
     如果启用了 交换分区 则无法启动 Kubelet:
swapoff -a && sed -i '/ swap / s/^/#/' /etc/fstab

为每个节点配置hostname并在各个节点的/etc/hosts文件中添加映射关系

以上环境准备工作需要在master节点和工作节点都进行一遍

2.Master节点配置

运行kubeadm init初始化主节点
直接初始化会导致失败,因为网络问题拉取镜像会失败,换成国内源基本可以了,我换成阿里源,但是还是有一个镜像拉取失败(coredns-v1.8.4的镜像),我这里采用的方式是先用docker pull去拉取coredns
然后再用tag打成指定标签,最后才使用init命令
#拉取coredns镜像
docker pull rancher/coredns-coredns:1.8.3
#重新tag打成需要的标签
docker tag docker.io/rancher/coredns-coredns:1.8.3 registry.aliyuncs.com/google_containers/coredns:v1.8.4
#删除不用的镜像
docker rmi docker.io/rancher/coredns-coredns:1.8.3

#执行初始化命令,注意添加国内镜像源
kubeadm init --image-repository registry.aliyuncs.com/google_containers --ignore-preflight-errors=Swap

该命令的输出的最后一行需要记录下来,后面要用来配置工作节点,格式如下:
kubeadm join 192.168.91.151:6443 --token ud2kk3.2j9bokteu5wt929q \
 --discovery-token-ca-cert-hash sha256:7d9d95e33ba22a0a12a966e182673911f2af67e6833b9e8d0df66048854e5905 

配置kubectl

在配置过kubeconfig文件之前,无法使用kubectl与集群进行通信,
/etc/kubemetes/admin.conf文件中有必要的一些配置。只需通过设置KUBECONFIG环境变量让kubectl使用它即可

export KUBECONFIG=/etc/kubernetes/admin.conf

配置etcdctl 

#查看k8s中etcd的版本
kubectl describe pods etcd-master -n kube-system

 我这里的版本为3.5.0,下载etcd版本,解压,copy etcdctl到k8s master节点的/usr/bin目录下

#下载etcd
wget https://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-linux-amd64.tar.gz
#解压etcd
tar -xf etcd-v3.5.0-linux-amd64.tar.gz
#拷贝其中的etcdctl到/usr/bin目录

获取etcd的endpoint 

- command:
    - etcd
    - --advertise-client-urls=https://192.168.91.151:2379
    - --cert-file=/etc/kubernetes/pki/etcd/server.crt
    - --client-cert-auth=true
    - --data-dir=/var/lib/etcd
    - --initial-advertise-peer-urls=https://192.168.91.151:2380
    - --initial-cluster=master=https://192.168.91.151:2380
    - --key-file=/etc/kubernetes/pki/etcd/server.key
    - --listen-client-urls=https://127.0.0.1:2379,https://192.168.91.151:2379
    - --listen-metrics-urls=http://127.0.0.1:2381
    - --listen-peer-urls=https://192.168.91.151:2380
    - --name=master
    - --peer-cert-file=/etc/kubernetes/pki/etcd/peer.crt
    - --peer-client-cert-auth=true
    - --peer-key-file=/etc/kubernetes/pki/etcd/peer.key
    - --peer-trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
    - --snapshot-count=10000
    - --trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt

 etcd的endpoint为https方式,所以要为etcdctl命令准备key和cert
key使用/etc/kubernetes/pki/etcd/peer.key
cert使用/etc/kubernetes/pki/etcd/peer.crt

因为集群证书为自签发,所以这里需要加上–insecure-skip-tls-verify参数,不然会报错误

etcdctl --cert /etc/kubernetes/pki/etcd/peer.crt --key /etc/kubernetes/pki/etcd/peer.key  --endpoints https://192.168.91.151:2379 --insecure-skip-tls-verify  member list

3.工作节点安装配置

在工作节点执行init后记录下来的命令,就可以将工作节点加入集群:
kubeadm join 192.168.91.151:6443 --token ud2kk3.2j9bokteu5wt929q \
 --discovery-token-ca-cert-hash sha256:7d9d95e33ba22a0a12a966e182673911f2af67e6833b9e8d0df66048854e5905

4.配置容器网络

此时调用kubectl get node,返回的节点状态是NotReady,因为还没有配置集群网络

执行以下命令将完成网络的配置

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')

此时调用kubectl get node,会发现所有的节点状态为Ready,集群搭建完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值