之前是用kubernetes-master和kubernetes-node实现自动安装,但是其实这并不利于我理解和学习kubernetes,所以再一次我决定手动来完成一次安装部署以及配置,因为反正kubernetes是分布式的,本来就要装多台,我就每一台用不同的方式来装
首先上张图,有利于清楚的了解master和node的区别,它们各自工作的组件
在这里插入图片描述
服务架构
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
去阿里云开源镜像站[https://developer.aliyun.com/mirror/],因为网易镜像站上根本就没有kubernetes,如下图
在这里插入图片描述
然后配置yum源,就可以使用yum安装了,不同系统的配置方法都有介绍
在这里插入图片描述

yum install -y kubelet kubeadm kubectl 

systemctl enable kubelet && systemctl start kubelet

ps: 由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 这时请用 yum install -y --nogpgcheck kubelet kubeadm kubectl 安装

master安装配置操作(主要难点都集中在master主机上),默认以安装docker环境

1:大前提:firewalld,selinux,swap都要关闭,都在会失败

systemctl stop firewalld
setenforce 0
swapoff -a

以上是暂时关闭,若要永久关闭

vim  etc/fstab     //将swap注释掉
systemctl disable firewalld     //永久关闭防火墙
vim /etc/selinux/config       //设置为disabled

2:修改IP地址、主机和host解析
在这里插入图片描述

Keepalived安装(master节点安装)

yum -y install keepalived

keepalived配置
保留默认配置

mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived_default.conf

写入新的配置
vim /etc/keepalived/keepalived.conf

global_defs {
router_id master
}

vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 50
priority 100
advert_int 1
authentication {
    auth_type PASS
    auth_pass 1111
}
virtual_ipaddress {
    192.168.0.130
}
}

说明:

特别注意红色字体文本,master是主机名称(如果有其他主机则使用对应的主机名称进行替换),ens33是网卡名称(每个linux系统可能不一致),192.168.0.130是虚拟IP

启动keepalived

service keepalived start && systemctl enable keepalived

vim /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

IP查看
在master机器上执行
ip a

使用kubeadm非常方便:
• 用户只需运行几个命令即可:
kubeadm init //初始化
kubectl apply -f <network-of-choice.yaml> //安装网络插件
kubeadm join --token :
考虑到初始化中镜像的拉取会大大延长时间,所以这里我们事先把需要的镜像都给获取下来,所以执行

kubeadm config images list

可以得知需要那些镜像并提前拉取
在这里插入图片描述
可以一个一个拉取并打上标签,或者也可以用脚本一次性拉取,自己搞定,
方式如下,如果不会这种脚本,就一个一个拉取再打标签,也不多

for imageName in ${images[@]} ; do  
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
done
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.0  //手动获取

第一步

kubeadm init \
--apiserver-advertise-address=*192.168.0.113* \    //master的IP地址
--apiserver-bind-port 6443 \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers  \  //镜像地址
--kubernetes-version v1.18.0 \    //kubernetes版本
--service-cidr=10.96.0.0/12 \       //服务网段
--pod-network-cidr=192.168.0.0/16    //pod网段

kubeadm初始化需要指定一些参数master的IP地址请工具自己主机修改,镜像站这里用国内阿里云,否则会失败,kubernetes 的版本自己注意检验service网段就用它自己默认的就可以了。还有最后一项,也是非常重要的,那就是pod网段,这个网段的选择有涉及到你到底用哪一种网络插件,我用的是calico插件,所以网段就设为192.168.0.0/16,而网络插件有众多,如用flannel网络插件则要设置为10.244.0.0/16,这个具体要去官网查看
kubernetes官方网址
在这里插入图片描述
好了,这个过程可能非常漫长,也许会失败,那就要重新再来

kubeadm reset

如果成功了,那么就根据提示执行操作
在这里插入图片描述

root用户执行以下操作

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

若是普通用户,还要添加下面的操作

sudo chown $(id -u):$(id -g) $HOME/.kube/config

另外要把kubeadm token 口令记下来,免得遗忘,即便遗忘,可执行如下操作

kubeadm token create --print-join-command --ttl 0  //有效期为永久

其他node节点加入就需要用到这个口令.
执行下面操作,检查是否安装成功以及集群状态

kubectl get nodes
kubectl get cs

在这里插入图片描述
会发现master处于notready状态,需安装calico网络,前面说过了,我这里使用calico网络,执行以下操作即可

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

node节点安装部署

同样安装kubeadm,kubectl,kubelet,注意node也和master有相同的要求,docker,关闭firewalld,selinux,swap

yum install -y kubelet kubeadm kubectl 

systemctl enable kubelet && systemctl start kubelet

拉取kube-proxy的镜像

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.0  //手动获取

执行加入口令(node节点执行)

kubeadm join 192.168.0.113:6443 --token cwrzki.n8imjzp9sk0h7pch     --discovery-token-ca-cert-hash sha256:4058d1501bbae7c0bbfcfe7e15f62f9c951d3b5e5748ebe1bf3f4546be4b1db1

到master节点检查
kubectl get nodes
在这里插入图片描述
会发现node2的角色(ROLES)为none,这是为什么呢,因为我们还没有为其打上标签,执行如下操作

[root@master ~]# kubectl label node node2 node-role.kubernetes.io/node=node

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200803150302780.
可以看见node2的role已经改变了,但是这里status变为notready,没关系,因为节点长时间不操作自然就会改变状态

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐