Kubernetes集群安装CentOS 7.7+Docker 18

实验目的:

之前安装了minikube,本来的目的就是了解了解kubernetes的命令,算是简单入门。其实安装完成后,也没怎么用过,真正想深入学习,还是得安装集群。

于是乎,说干就干了。安装的过程还是有些麻烦,前前后后安装过两次,耗费一天时间,还是觉得自己的功力不够深厚啊。

 

实验准备:

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

主机名

主机IP地址

备注

K8SMaster

192.168.1.4

K8S控制节点,需安装Docker,kubelet,kubeadm,kubectl,以及calico网络

K8SNode1

192.168.1.3

K8S集群计算节点,需安装Docker,kubelet,kubeadm

K8SNode2

192.168.1.5

K8S集群计算节点,需安装Docker,kubelet,kubeadm

2)Docker 18.03.1

3)Kubernetes组件:kubelet,kubeadm,kubectl

 

实验过程:

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

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

sudo yum install -y yum-utils

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum list docker-ce --showduplicates | sort -r

yum install docker-ce-18.03.1.ce

systemctl enable docker && systemctl start docker    //设置开机启动

为了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 Repository
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0

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

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

 

systemctl enable kubelet && systemctl start kubelet     //设置开机启动

步骤三:配置内核参数

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

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

2)关闭swap,并注释swap分区

swapoff -a
vi /etc/fstab

 

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

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

sysctl --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下面的信息。

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

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

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

kubectl get node
kubectl get pod --all-namespaces

 

步骤五:安装calico网络

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

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

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

kubectl get pod --all-namespaces
kubectl get node

步骤六:安装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

 

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

如果在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没有关闭,注意检查。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值