k8s add node calico_K8S集群CentOS 7.7+Docker 18

实验目的:

之前安装了minikube,本来的目的就是了解了解kubernetes的命令,算是简单入门。其实安装完成后,也没怎么用过,真正想深入学习,还是得安装集群。于是乎,说干就干了。安装的过程还是有些麻烦,前前后后安装过两次,耗费一天时间,还是觉得自己的功力不够深厚啊。

10479fdd9c1acf57fa4c07787774c05a.png
9fae263289bdaef6acf3f156e13b19d6.png
328fe8a16e2defe903fea709087acbe4.png

实验准备:

1)三台CentOS 7.7主机(本实验使用的是VirtualBox虚拟机)

8760b74702720ac570a52d8474585b15.png

2)Docker 18.03.1

3)Kubernetes组件:kubelet,kubeadm,kubectl

实验过程:

步骤一:安装docker,首先下载yun源文件,然后安装。安装成功后启动docker,同时设置docker和kubelet开机启动。

Docker安装可以参考之前发的安装帖子。

sudo yum install -y yum-utilssudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoyum list docker-ce --showduplicates | sort -ryum install docker-ce-18.03.1.cesystemctl enable docker && systemctl start docker    //设置开机启动
e09a8b5a546c93d515cebf6b5f72e896.png

为了docker下载镜像加速,同样要新建并配置一个deamon.json文件。

vi /etc/docker/daemon.json

复制如下代码到此文件中

{"registry-mirrors": ["https://zfzbet67.mirror.aliyuncs.com"]}

步骤二:安装kubernetes。上官网,https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

首先配置yum源,由于官网的yum仓库地址是Google的,考虑到国内访问速度慢,所以换成了阿里云的地址。使用如下命令新建kubernetes.repo文件

vi /etc/yum.repos.d/kubernetes.repo

然后将相关信息写入到该文件中,保存退出。(先按Esc键切换到非编辑模式,然后按Shift+Q键,在最下面一行提示符冒号后,输入wq,回车退出)

[kubernetes]name=Kubernetes Repositorybaseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/enabled=1gpgcheck=0 

使用yum命令安装kubernetes相关工具。

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes systemctl enable kubelet && systemctl start kubelet     //设置开机启动
31315c5ce2e50ca4271a4c30e4d4a35a.png

步骤三:配置内核参数

将 SELinux 设置为 permissive 模式(相当于将其禁用)

setenforce 0sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

关闭swap,并注释swap分区

swapoff -avi /etc/fstab
869b4ce6e2144788e2e485411fb5f948.png

配置内核参数,将桥接的IPv4流量传递到iptables的链

cat <  /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOFsysctl --system

步骤四:初始化K8S集群,使用kubeadm init命令,指定K8S版本号,apiserver IP地址(即master本机IP,我做实验的本机ip为192.168.1.4),后面的镜像仓库参数以及service和pod的网络配置,均是参考了kubernetes中文社区的帖子(https://www.kubernetes.org.cn/7189.html )

kubeadm init --kubernetes-version=1.19.0  --apiserver-advertise-address=192.168.1.4   --image-repository registry.aliyuncs.com/google_containers  --service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16

初始化成功后,会输出successful提示信息,同时要重点记录successful下面的信息。

a1d7ac0b8ac55374d549ef628ca6fb31.png

根据提示,如果要启动集群,需要运行以下三行命令

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

查看node状态,会显示NotReady,因为目前还缺少网络pod。

kubectl get nodekubectl get pod --all-namespaces
067a05cc567207b7f355ee89644a4701.png

步骤五:安装calico网络

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

如果没有问题,会输出一堆created信息

97a84276ac0840486eb895aad2569ecc.png

查看pod和node信息,如果是Running和Ready,说明运行正常

kubectl get pod --all-namespaceskubectl get node
601ebad904cad597ed34bceea81d3848.png

步骤六:安装Node节点,重复操作步骤一至步骤三,只有步骤二稍有区别,Node节点上不需要安装kubectl命令行工具,因为操作K8S集群肯定是通过master节点的。

注意:这里的kubeadm join命令信息,是之前在master节点上kubeadm init完成后输出的信息,最重要的就是这个token,一般有效期是1天,过期了需要重新生成。

kubeadm join --token 8yocd2.v3eiy8oazz0eprz1 192.168.1.4:6443 --discovery-token-ca-cert-hash sha256:011c85790fea2f64aeca911f68fb0ffc121708b90eaafb77db2fc001717626d9
ec26e537a212fe5eb9728c385af9743f.png

然后回到master上查看node,会看到已添加的Node节点信息

26e6b6574b3357d02e48fbe90bc1fe11.png

如果在master上执行kubeadm init时没有记录下kubeadm join……那一长串的Node加入命令的话,可以使用如下命令找到token名称和sha256密钥。

kubeadm token list      //获取token名称//获取sha256密钥openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null |    openssl dgst -sha256 -hex | sed 's/^.* //'

问题总结

1)如果使用kubeadm join无法成功添加到集群,使用kubeadm reset命令重置

2)在安装master和nodes之前,需修改主机名,最好规划IP地址,否则在后续join时会发生一些冲突

3)如果提示execution phase preflight: couldn't validate the identity of the API Server这样的错误,有两种情况:一是token可能失效了,使用kubeadm token list 查看有效的token信息,如果是空或者失效,需要重新生成token,使用kubeadm token create;二是防火墙或者SElinux没有关闭,注意检查。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值