十年河东,十年河西,莫欺少年穷
学无止境,精益求精
本篇采用一主二从模式进行,该模式用于测试环境,真实环境还得是多主多从,防止单点故障
master 192.168.136.135
node1 192.168.136.136
node2 192.168.136.137
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
hostnamectl set-hostname master
hostnamectl set-hostname node1
hostnamectl set-hostname node2
vim /etc/hosts
在三台虚拟机的 hosts 文件中增加如下配置
192.168.136.135 master
192.168.136.136 node1
192.168.136.137 node2
此时三台虚拟机可以相互 ping 通
我在master 中 ping node1虚拟机
关闭
systemctl stop firewalld
禁用
systemctl disable firewalld
安装时间插件
yum install ntpdate -y
同步时间
ntpdate time.windows.com
查看selinux是否开启
getenforce
永久关闭selinux,需要重启
sed -i 's/enforcing/disabled/' /etc/selinux/config
临时关闭selinux,重启之后,无效
setenforce 0
sed -ri 's/.*swap.*/#&/' /etc/fstab
swapoff -a
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
EOF
加载br_netfilter模块
# 加载br_netfilter模块
modprobe br_netfilter
查看是否加载
# 查看是否加载
lsmod | grep br_netfilter
生效
# 生效
sysctl --system
yum -y install ipset ipvsadm
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
lsmod | grep -e ipvs -e nf_conntrack_ipv4
reboot
以上便完成了K8s环境的搭建
指定阿里云加速
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
安装指定版本
yum -y install docker-ce-18.06.3.ce-3.el7
开机自启动docker
systemctl enable docker && systemctl start docker
查看docker 版本
docker version
mkdir -p /etc/docker
设置阿里云Yum源 【可登录自己的阿里云,搜索容器镜像服务,配置docker镜像加速器】
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://du3ia00u.mirror.aliyuncs.com"],
"live-restore": true,
"log-driver":"json-file",
"log-opts": {"max-size":"500m", "max-file":"3"},
"storage-driver": "overlay2"
}
EOF
加载docker配置 并 重启docekr
sudo systemctl daemon-reload
重启docker
sudo systemctl restart docker
添加阿里云的YUM软件源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
安装kubeadm、kubelet和kubectl
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
vim /etc/sysconfig/kubelet
修改文件内容为:
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"
systemctl enable kubelet
查看K8s所需镜像
kubeadm config images list
14、部署K8s Master 节点【只需在Master节点执行即可,我的master节点的Ip地址为:192.168.136.135】
# 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里需要指定阿里云镜像仓库地址
kubeadm init \
--apiserver-advertise-address=192.168.136.135 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
根据提示,在master节点上做如下配置
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
在两个Node节点,执行Master节点的提示语句,使子节点加入master集群
kubeadm join 192.168.136.135:6443 --token cuzc43.83wxhfwd4mgul4ts \
--discovery-token-ca-cert-hash sha256:6eac1ffac64643db9b89cc131a7f731c1ddb302ca3653c931c97283999ef2962
kubeadm token create --print-join-command
当然,为了防止以后其他子节点加入时Token过期,我们生产一个永不过期的token
# 生成一个永不过期的token
kubeadm token create --ttl 0 --print-join-command
执行完毕后,在Master节点查看子节点的信息
kubectl get nodes
ok,截止到这儿,k8s节点集群就初步完成了。但三个节点的状态都是NotReady ,为什么?
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
只爱少妇