kubeadm 搭建k8s集群

Cherish 2020-01-22 22:10:15
原文地址:https://segmentfault.com/a/1190000021382487

kubeadm 搭建k8s集群

搭建环境 ,下面三台机器都是centos7.5,内核版本为3.10.0

  • master:192.168.157.21
  • node1:192.168.157.22
  • node2:192.168.157.23

搭建master

1.关闭防火墙

systemctl stop firewalld

systemctl stop firewalld
systemctl disable firewalldsystemctl stop firewalld
systemctl disable firewalld

setenforce 0

sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

swapoff -a
sed -i '/^.*swap.*/d' /etc/fstab

2.创建本地解析

cat << EOF >> /etc/hosts
192.168.157.22 node01
192.168.157.23 node02
192.168.157.23 master
EOF

安装docker

#安装必要的一些系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
#yum源添加软件源信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新yum源
yum makecache fast
#安装docker
yum -y install docker-ce || yum -y install docker-ce-[VERSION]

#开机启动
systemctl start docker && systemctl enable docker

#查看是否安装成功
docker version 

安装kubernetes

1.yum 安装相关软件

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
yum repolist
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet

2.使用kubeadm进行master初始化

#生成kubeadm配置文件
kubeadm config print init-defaults > kubeadm.conf
kubeadm config print-default > kubeadm.conf # 老版本可以使用这个命令

#换kubeadm的镜像仓库
sed -i "s/imageRepository: .*/imageRepository: registry.aliyuncs.com\/google_containers/g" kubeadm.conf

#下载k8s master 节点中的镜像到本地
kubeadm config images pull --config kubeadm.conf

#修改kubeadm.conf中advertiseAddress参数指定master的ip地址
sed -i "s/advertiseAddress: .*/advertiseAddress: 192.168.157.21/g" kubeadm.conf

#我使用的是Canal网络插件,因此需要将--pod-network-cid设置为10.244.0.0/16
sed -i "s/podSubnet: .*/podSubnet: \"10.244.0.0\/16\"/g" kubeadm.conf

#进行master初始化
kubeadm init --config kubeadm.conf

报错处理

![baocuo.png](https://segmentfault.com/img/bVbBSDS "baocuo.png")

此报错是由于cpu核数不足,k8s最低需要2核才可以运行

![swap.png](https://segmentfault.com/img/bVbBSDR "swap.png")

没有禁用swap导致安装异常,可以禁用掉,或者使用 “--ignore-preflight-errors=Swap”忽略次报错

安装完毕

1.初始化成功
![chushichenggong.png](https://segmentfault.com/img/bVbBSDl "chushichenggong.png")

# 保存这条命令在node上使用
kubeadm join 192.168.157.21:6443 --token g1eojw.rwjv5t18d32hjbro --discovery-token-ca-cert-hash sha256:bcf361414fb2b51387930ea0c2f902e876e52858b5ec6874281cd0b6b8f4ab4a

2.查看镜像是否拉取完整​

docker image ls

![jingxiang.png](https://segmentfault.com/img/bVbBSDI "jingxiang.png")

3.查看服务是否健康

kubectl get cs
#查看配置信息
kubectl get configmap kube-flannel-cfg -o json -n kube-system
#查看dns地址
kubectl get svc kube-dns -n kube-system

![chengong.png](https://segmentfault.com/img/bVbBSDc "chengong.png")

安装flannel

  • 安装
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml 
  • 处理问题
kubectl get pods -n kube-system

![flannel.png](https://segmentfault.com/img/bVbBSDa "flannel.png")

  • 查看具体问题
kubectl describe pod kube-flannel-ds-amd64-2dqlf -n kube-system

![flannel1.png](https://segmentfault.com/img/bVbBSC3 "flannel1.png")

通过上面的报错可以知道容器pull失败是由于网络异常

增加指定网卡“- --iface=ens33”

containers:
      - name: kube-flannel
        image: quay.io/coreos/flannel:v0.10.0-amd64
        command:
        - /opt/bin/flanneld
        args:
        - --ip-masq
        - --kube-subnet-mgr
        - --iface=ens33
kubectl delete -f kube-flannel.yml

#修改yml文件改变镜像仓库
sed -i 's#quay.io/coreos/flannel:v0.11.0#registry.cn-hangzhou.aliyuncs.com/rsq_kubeadm/flannel:v0.10.0#g' kube-flannel.yml

#重新安装
kubectl apply -f kube-flannel.yml

搭建node

  1. 关闭firewalld,selinux,swap
  2. 依次安装docker,kubelet,kubeadm,kubectl
  3. 执行初始化是生成的命令行
kubeadm join 192.168.157.21:6443 --token g1eojw.rwjv5t18d32hjbro --discovery-token-ca-cert-hash sha256:bcf361414fb2b51387930ea0c2f902e876e52858b5ec6874281cd0b6b8f4ab4a

如果忘记上面那条命令可以中心生成

#重新生成token
kubeadm token create
#查看takenlist
kubeadm token list
#获取加密
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

查看集群状态

kubectl get nodes -o wide

![wide.png](https://segmentfault.com/img/bVbBSCW "wide.png")

声明:该文章系转载,转载该文章的目的在于更广泛的传递信息,并不代表本网站赞同其观点,文章内容仅供参考。

本站是一个个人学习和交流平台,网站上部分文章为网站管理员和网友从相关媒体转载而来,并不用于任何商业目的,内容为作者个人观点, 并不代表本网站赞同其观点和对其真实性负责。

我们已经尽可能的对作者和来源进行了通告,但是可能由于能力有限或疏忽,导致作者和来源有误,亦可能您并不期望您的作品在我们的网站上发布。我们为这些问题向您致歉,如果您在我站上发现此类问题,请及时联系我们,我们将根据您的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。