快速部署一个k8s集群

kubeadm 是官方社区推出的一个用于快速部署 kubernetes 集群的工具 。
这个工具能通过两条指令完成一个 kubernetes 集群的部署:
# 创建一个 Master 节点$ kubeadm init # 将一个 Node 节点加入到当前集群中$ kubeadm join <Master节点的IP和端口 >1. 安装要求在开始之前 , 部署 Kubernetes 集群机器需要满足以下几个条件:

  • 一台或多台机器 , 操作系统 centos7.x-86_x64
  • 硬件配置:2GB 或更多 RAM , 2 个 CPU 或更多 CPU , 硬盘 40GB 或更多
  • 可以访问外网 , 需要拉取镜像 , 如果服务器不能上网 , 需要提前下载镜像并导入节点
  • 禁止 swap 分区
2. 准备环境 角色
IP
master
192.168.62.132
node1
192.168.62.133
node2
192.168.62.134
# 关闭防火墙systemctl stop firewalldsystemctl disable firewalld# 关闭selinuxsed -i 's/enforcing/disabled/' /etc/selinux/config # 永久setenforce 0 # 临时# 关闭swapswapoff -a # 临时sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久# 根据规划设置主机名hostnamectl set-hostname <hostname># 在master添加hostscat >> /etc/hosts << EOF192.168.62.132 k801192.168.62.133 k8s02192.168.62.134 k8s03EOF# 将桥接的IPv4流量传递到iptables的链cat > /etc/sysctl.d/k8s.conf << EOFnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOFsysctl --system # 生效# 时间同步yum install ntpdate -yntpdate time.windows.com3. 所有节点安装 Docker/kubeadm/kubeletKubernetes 默认 CRI(容器运行时)为 Docker , 因此先安装 Docker 。
3.1 安装 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 --versionDocker version 18.06.1-ce, build e68fc7a$ cat > /etc/docker/daemon.json << EOF{"registry-mirrors": ["https://x53i3zju.mirror.aliyuncs.com"]}EOF3.2 添加阿里云 YUM 软件源$ cat > /etc/yum.repos.d/kubernetes.repo << EOF[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0repo_gpgcheck=0gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF3.3 安装 kubeadm , kubelet 和 kubectl由于版本更新频繁 , 这里指定版本号部署:
$ yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0$ systemctl enable kubelet4. 部署 Kubernetes Master在 192.168.62.132(Master)执行 。
$ kubeadm init --apiserver-advertise-address=192.168.62.132 --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由于默认拉取镜像地址 k8s.gcr.io 国内无法访问 , 这里指定阿里云镜像仓库地址 。使用 kubectl 工具:
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configkubectl get nodes5. 加入 Kubernetes Node在 192.168.62.133/134(Node)执行 。
向集群添加新节点 , 执行在 kubeadm init 输出的 kubeadm join 命令:
$ kubeadm join 192.168.62.132:6443 --token dcxghk.5zgiiw6yk7qf5wol     --discovery-token-ca-cert-hash sha256:aad826e486e6728e176b14e803199a42805572ed8b266269d7581f1e244df33c默认 token 有效期为 24 小时 , 当过期之后 , 该 token 就不可用了 。这时就需要重新创建 token , 操作如下:
kubeadm token create --print-join-command6. 部署 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 apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-aliyun.ymlkubectl get pods -n kube-systemNAME READY STATUS RESTARTS AGEkube-flannel-ds-amd64-2pc95 1/1 Running 0 72s7. 测试 kubernetes 集群在 Kubernetes 集群中创建一个 pod , 验证是否正常运行:
$ kubectl create deployment Nginx --image=nginx$ kubectl expose deployment nginx --port=80 --type=NodePort$ kubectl get pod,svc访问地址:http://NodeIP:Port


推荐阅读