kubeadm 是官方社区推出的一个用于快速部署 kubernetes 集群的工具,这个工具能通过两条指令完成一个 kubernetes 集群的部署:
- 创建一个Master节点 kubeadm init
- 将Node节点加入到当前集群中 $ kubeadm join <Master 节点的IP和端口>
环境准备:
服务器三台(虚拟机,192.168.228.10/11/12,2C/2G,centos7.5)
系统配置:
- 关闭防火墙
# 临时关闭防火墙 systemctl stop firewalld # 永久关闭防火墙 systemctl disable firewalld
- 关闭selinux
# 临时关闭selinux setenforce 0 # 永久关闭selinux sed -i 's/enforcing/disabled/' /etc/selinux/config
- 关闭swap
# 临时关闭swap swapoff -a # 永久关闭 # 注释/etc/fstab文件中swap配置 /dev/mapper/centos-root / xfs defaults 0 0 UUID=44db6c96-374e-4fca-badb-bbcf4adc1f9d /boot xfs defaults 0 0 #/dev/mapper/centos-swap swap swap defaults 0 0 echo vm.swappiness=0 >> /etc/sysctl.conf # 重启 reboot
- 设置主机名
# 192.168.228.10 hostnamectl set-hostname master # 192.168.228.11 hostnamectl set-hostname slave1 # 192.168.228.12 hostnamectl set-hostname slave2
- 配置hosts
cat >> /etc/hosts << EOF 192.168.228.10 master 192.168.228.11 slave2 192.168.228.12 slave2 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
- 配置时间同步
timedatectl set-timezone Asia/Shanghai yum install ntpdate -y ntpdate time.windows.com
所有节点安装Docker/kubeadm/kubelet
- 安装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
- 添加阿里云yum软件源
# 设置仓库地址 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 kubeadm kubectl systemctl enable kubelet
- 克隆slave1、slave2
略(更改网络ip、主机名)
部署 Kubernetes Master
- 在master(192.168.228.10)执行
kubeadm init --apiserver-advertise-address=192.168.228.10 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.20.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
- 安装pod网络插件(CNI)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
加入kubernetes Node
- 在192.168.228.11、192.168.228.12上执行(之前执行kubeadm init 输出的最后一段命令)
kubeadm join 192.168.228.10:6443 --token qbdetu.33vjzp8v66ohubhp \ --discovery-token-ca-cert-hash sha256:910add3987188a8fd61ba0aef75623c9b0b4732860cfd834605769529500271d
测试kubernetes集群
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc
这时候访问192.168.228.11:32160 / 192.168.228.12:32160,可以看到大家熟知的页面:Welcome to nginx!