Kubernetes安装有图有真相

一、准备环境(三台虚拟机都执行)

1、准备三台虚拟机

master 10.7.0.111

node1 10.7.0.112

node1 10.7.0.113

 

2、三台虚拟机分别修改hostname

hostnamectl set-hostname master

hostnamectl set-hostname node1

hostnamectl set-hostname node2

 

3、修改三台虚拟机的hosts,在文件末尾追加三行

vi /etc/hosts

10.7.0.111 master

10.7.0.112 node1

10.7.0.113 node2

 

4、禁用SELinux

1)、临时关闭(不用重启机器)

setenforce 0

#setenforce 0 设置SELinux 成为permissive模式,setenforce 1 设置SELinux 成为enforcing模式

2)、永久关闭(需要重启机器)

vi /etc/selinux/config

设置为:SELINUX=disabled

3)、查看SELinux状态

getenforce

 

5、防火墙

systemctl stop firewalld && systemctl disable firewalld

查看防火墙状态

systemctl status firewalld

 

6、交换分区

1)、临时关闭swap分区

swapoff -a

#swapon -a与swapoff -a分别用于swap分区的临时启动与关闭,重启失效.

free -m

查看swap分区的使用情况

 

2)、永久关闭swap分区

sed -ri 's/.*swap.*/#&/' /etc/fstab

上面命令即:修改 vi /etc/fstab 文件,注释掉 包含swap的行,

 

3)、创建vi /etc/sysctl.d/kubernetes.conf文件(安装k8s需要用到),添加下面内容:

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

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

net.ipv4.ip_forward = 1

vm.swappiness=0

 

#生效文件

modprobe br_netfilter sysctl -p /etc/sysctl.d/kubernetes.conf

 

7、iptables

iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT

 

确认一下iptables filter表中FOWARD链的默认策略(pllicy)为ACCEPT。Docker从1.13版本开始调整了默认的防火墙规则,禁用了iptables filter表中FOWARD链,这样会引起Kubernetes集群中跨Node的Pod无法通信。但这里通过安装docker ,发现默认策略又改回了ACCEPT,这个不知道是从哪个版本改回的

iptables -nvL

 

二、安装docker(三台虚拟机都执行)

1、卸载旧版本

yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine

 

删除存储目录

rm -rf /etc/docker

rm -rf /run/docker

rm -rf /var/lib/dockershim

rm -rf /var/lib/docker

rm -rf /usr/libexec/docker

 

2、安装一些必要的系统工具

yum install -y yum-utils device-mapper-persistent-data lvm2

 

3、添加软件源信息

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新 yum 缓存:

yum makecache fast

 

4、安装 Docker-ce:

yum -y install docker-ce

启动 Docker 后台服务

systemctl start docker systemctl enable docker

查看版本

docker version

 

三、安装kubelet kubeadm kubectl(三台虚拟机都执行)

1、配置源

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 缓存:

yum makecache fast

2、安装 yum install -y kubelet kubeadm kubectl

 

启动kubelet服务

systemctl enable kubelet && systemctl start kubelet

 

 

 

四、初始化集群

1、初始化Master(master执行)

1)、初次初始化

在master上执行下面的命令:注意修改kubernetes-version 和 apiserver-advertise-address

kubeadm init \ --kubernetes-version=v1.18.0 \ --pod-network-cidr=10.244.0.0/16 \ --apiserver-advertise-address=10.7.0.111

 

报错如下,是因为 导入docker k8s 镜像 这些镜像默认在google是无法访问到的,可以直接指定镜像源

 

2)、清理失败环境

#集群初始化如果遇到问题,可以使用下面的命令进行清理,清理后根据提示删除相关文件,必须多删除一个没有提示的文件夹rm -rf $HOME/.kube

kubeadm reset

 

3)、指定镜像源重新初始化

kubeadm init --apiserver-advertise-address=10.7.0.111 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --service-cidr=10.96.0.0/16 --pod-network-cidr=10.244.0.0/16

 

初始化成功

 

根据提示执行以下命令,初始化完成,

mkdir -p $HOME/.kube

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

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

 

4)、查看节点状态(NotReady,是因为网络未初始化)

kubectl get node / kubectl get nodes

 

5)、查看pod状态(dns网络未初始化)

kubectl get pods -n kube-system -o wide

kubectl get pod --all-namespaces -o wide

 

6)、查看node日志(提示网络未准备好)

journalctl -f -u kubelet

 

 

7)、安装Pod Network(flannel)

7.1)、下载flannel配置文件

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

7.2)、部署flannel

kubectl create -f kube-flannel.yml

错误:

 

7.3)、查看 pod详细信息,发现镜像拉取失败

kubectl describe pod kube-flannel-ds-amd64-lkqt6 -n kube-system

 

修改 kube-flannel.yml 将 quay.io 改为 quay-mirror.qiniu.com后执行以下命令

7.4)、重新部署网络

kubectl apply -f kube-flannel.yml

初始化Master成功

 

 

 

2、向Kubernetes集群中添加Node节点(node执行)

kubeadm join 10.7.0.111:6443 --token tvnmar.h54kaqeqddtkyuxq --discovery-token-ca-cert-hash sha256:514b631269638051efe9381c7ee711c92508e97a158c3de51f13fdd870b5cf88

 

 

下一篇将更新k8s使用篇

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值