Kubeadm搭建K8S集群
搭建集群的方式有两种:kubeadm 和 二进制安装包搭建,这里我们就先对kubeadm的方式做一个搭建
kubeadm搭建集群大致步骤
-
kubeadm搭建:快速搭建,缺点就是出了问题不好把控
-
CentOS7虚拟机三台即可,配置允许小幅度降低
-
【Master Node】 2核心 4G内存 30G硬盘 * 1
-
【Worker Node】 4核心 6G内存 50G硬盘 * 2
-
-
系统初始化操作(修改必要配置文件,关闭防火墙......等等)
-
三个节点安装 Docker 、 Kubelet 、kubeadm 、 Kubectl
-
在Master 节点执行 kubeadm init 命令进行初始化
-
在Workder节点执行 kubeadm join命令将node节点添加到当前的集群里面
-
配置网络插件
-
服务器初始化
-
192.168.217.120 [ master ]
-
192.168.217.130 [ node1 ]
-
192.168.217.140 [ node2 ]
永久关闭防火墙
systemctl disable firewalld
永久关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
永久关闭swap分区
sed -ri 's/.swap./#&/' /etc/fstab
设置主机名
hostnamectl set-hostname <hostname>
hostnamectl set-hostname master
hostnamectl set-hostname node1
hostnamectl set-hostname node2
在master添加hosts
cat >> /etc/hosts << EOF 192.168.217.120 master 192.168.217.130 node1 192.168.217.140 node2 EOF
将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF
sysctl --system # 生效
时间同步于宿主机
yum install ntpdate -y
ntpdate time.windows.com
安装Docker
-
所有节点安装Docker/kubeadm/kubelet,这个三个环境,我们依次安装
-
因为kubenates默认的容器为Docker,所以首先我们安装Docker
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.1.ce-3.el7
systemctl enable docker && systemctl start docker
docker --version
-
设置Docker的镜像地址为国内阿里云
cat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"] } EOF
-
添加阿里云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
systemctl enable kubelet
Maser节点初始化
-
现在我们我们已经执行到大致步骤的第四步了,在master节点上初始化环境
-
由于K8S默认拉去镜像的地址是国外的,无法访问,我们将其地址修改为国内的阿里云地址
kubeadm init --apiserver-advertise-address=192.168.217.120 --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
-
使用kubectl工具
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config $ kubectl get nodes #发现只有一个master节点
node节点加入集群
-
我们在node1和node2机器上,也就是130和140机器上执行以下操作加入到集群中
-
我们在master执行初始化的时候,末尾会有一句提示如下所示
$ kubeadm join 192.168.217.120:6443 --token esce21.q6hetwm8si29qxwn --discovery-token-ca-cert-hash sha256:00603a05805807501d7181c3d60b478788408cfe6cedefedb1f97569708be9c5
将其复制到两个节点中执行即可,其中有效的认证token时效为24小时,失效后从星创建即可
kubeadm token create --print-join-command
部署POD网络插件:CNI
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
-
默认镜像地址无法访问,sed命令修改为docker hub镜像仓库。
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
测试效果如下
kubectl get pods -n kube-system NAME READY STATUS RESTARTS AGE kube-flannel-ds-amd64-2pc95 1/1 Running 0 72s
测试Kubernetes集群
在Kubernetes集群中创建一个pod,验证是否正常运行:
kubectl create deployment nginx --image=nginx kubectl expose deployment nginx --port=80 --type=NodePort kubectl get pod,svc
然后访问该Nginx的服务,查看是否正常即可 ip:port