确保三台机器,的跨节点的容器互相通信,装网络插件flannel。
ip:192.168.80.128
安装组件:etcd, kube-apiserver, kube-controller-manager, kubectl, kubeadm, kubelet, kube-proxy, flannel
ip:192.168.80.129
安装组件:kubectl, kubelet, kube-proxy, flannel,docker
ip:192.168.80.130
安装组件:kubectl, kubelet, kube-proxy, flannel,docker
cat >>/etc/hosts <<'EOF'
192.168.80.128 k8s-master
192.168.80.129 k8s-node1
192.168.80.130 k8s-node2
EOF
ping -c 2 k8s-master
ping -c 2 k8s-node1
ping -c 2 k8s-node2
systemctl stop firewalld NetworkManager
systemctl disable firewalld NetworkManager
sed -ri 's#(SELINUX=).*#\1disabled#' /etc/selinux/config
setenforce 0
systemctl disable firewalld && systemctl stop firewalld
getenforce 0
iptables -F
iptables -X
iptables -Z
iptables -P FORWARD ACCEPT
k8s默认禁用swap功能
swapoff -a
# 防止开机自动挂载 swap 分区
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
sed -i '/aliyuncs/d' /etc/yum.repos.d/*.repo
yum clean all && yum makecache fast
yum install chrony -y
systemctl start chronyd
systemctl enable chronyd
date
# 修改配置文件,加入ntp.aliyun.com上游地址即可
ntpdate -u ntp.aliyun.com
hwclock -w
# 容器夸主机通通信,底层是走的iptables,内核级别的数据包转发
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
vm.max_map_count=262144
EOF
modprobe br_netfilter
# 加载读取内核参数配置文件
sysctl -p /etc/sysctl.d/k8s.conf
yum remove docker docker-common docker-selinux docker-engine -y
curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum list docker-ce --showduplicates
yum install docker-ce-19.03.15 docker-ce-cli-19.03.15 -y
#配置docker加速器、以及crgoup驱动,改为k8s官方推荐的systemd,否则初始化时会有报错。
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<'EOF'
{
"registry-mirrors" : [
"https://ms9glx6x.mirror.aliyuncs.com"],
"exec-opts":["native.cgroupdriver=systemd"]
}
EOF
#启动
systemctl start docker && systemctl enable docker
docker version
# 安装k8s集群环境初始化的工具
# kubelet-1.19.3 , # 组件,增删改查pod再具体机器上,pod可以运行主节点上,node节点上
# kubeadm-1.19.3 # k8s版本 1.19.3 ,自动拉去k8s基础组件镜像的一个工具
# kubectl-1.19.3 # 管理,维护k8s客户端换,和服务端交互的一个命令行工具
所有机器执行:
cat init-k8s.sh
#设置阿里云源
curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum clean all && yum makecache
#yum list kubeadm --showduplicates 列出,这个阿里云k8s源,提供了哪些k8s版本让你玩
# 安装指定版本 kubeadm-1.19.3 ,安装的kubeadm版本,就是决定了,拉去什么版本的k8s集群版本的镜像
yum install kubelet-1.19.3 kubeadm-1.19.3 kubectl-1.19.3 ipvsadm -y
在执行上述操作时,虚拟机的ip突然没有了,但是重启后网络恢复正常。
## 查看kubeadm 版本,初始化的k8s版本信息,就是 v1.19.3版本
$ kubeadm version
[root@k8s-master ~]#kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.3", GitCommit:"1e11e4a2108024935ecfcb2912226cedeafd99df", GitTreeState:"clean", BuildDate:"2020-10-14T12:47:53Z", Go
## 设置kubelet开机启动
systemctl enable kubelet
systemctl enable docker
先保留所有节点的应用 端口状态,待会看k8s跑起来之后,占用了哪些端口,知道哪些程序运行了
# kubeadm init 初始化,加入一些参数
#
kubeadm init \
--apiserver-advertise-address=192.168.80.128 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.19.3 \
--service-cidr=192.169.0.0/16 \
--pod-network-cidr=192.170.0.0/16 \
--service-dns-domain=cluster.local \
--ignore-preflight-errors=Swap \
--ignore-preflight-errors=NumCPU
kubeadm init \
--apiserver-advertise-address=10.0.0.10 \ # api-server运行再k8s-master的ip上
--image-repository registry.aliyuncs.com/google_containers \ # 拉去k8s镜像,从阿里云上获取,否则默认是国外的k8s镜像地址,下载不了
--kubernetes-version v1.19.3 \ # 和kubeadm保持一直
--service-cidr=10.1.0.0/16 \ # k8s服务发现网段设置,service网段
--pod-network-cidr=10.2.0.0/16 \ # 设置pod创建后,的运行网段地址
--service-dns-domain=cluster.local \ # k8s服务发现网段设置,service资源的域名后缀
--ignore-preflight-errors=Swap \ # 忽略swap报错
--ignore-preflight-errors=NumCPU # 忽略cpu数量报错