目录

Life in Flow

知不知,尚矣;不知知,病矣。
不知不知,殆矣。

X

部署K8S

部署目标

  • 在所有节点上安装 Docker 和 kubeadm
  • 部署 Kubernetes Master
  • 部署容器网络插件

部署架构

ip 域名 备注 安装软件
192.168.31.101 master 主节点 Docker Kubeadm kubelet kubectl flannel
192.168.31.102 node1 从节点 1 Docker Kubeadm kubelet kubectl
192.168.31.103 node2 从节点 2 Docker Kubeadm kubelet kubectl

环境准备

  • 3 台虚拟机 CentOS7.x-86_x64
  • 硬件配置:2GB 或更多 RAM,2 个 CPU 或更多 CPU,硬盘 30GB 或更多
  • 集群中所有机器之间网络互通
  • 可以访问外网,需要拉取镜像
  • 禁止 swap 分区

域名解析

1[root@master ~]# vi /etc/hosts
2192.168.31.101 master
3192.168.31.102 node1
4192.168.31.103 node2

设置域名解析服务器

1[root@master ~]# vim /etc/resolv.conf
2nameserver 114.114.114.114
3
4

更换 CentOS YUM 源为阿里云 yum 源

 1# 安装wget(有则不必安装)
 2yum install wget -y
 3# 备份
 4mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
 5# 获取阿里云yum源
 6wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
 7# 获取阿里云epel源
 8wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
 9# 清理缓存并创建新的缓存
10yum clean all && yum makecache
11# 系统更新
12yum update -y

时间同步

1ntpdate ntp1.aliyun.com

关闭防火墙

1[root@master ~]# systemctl stop firewalld
2[root@master ~]# systemctl disable firewalld
3

关闭 selinux

1setenforce 0
2sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

关闭 swap 分区

1swapoff -a
2vi /etc/fstab

设置主机名

1hostnamectl set-hostname master
2hostnamectl set-hostname node1
3hostnamectl set-hostname node2

安装 docker

 1# 安装 Docker CE
 2# 设置仓库
 3# 安装所需包
 4yum install -y yum-utils \
 5    device-mapper-persistent-data \
 6    lvm2
 7
 8# 新增 Docker 仓库,速度慢的可以换阿里云的源。
 9yum-config-manager \
10    --add-repo \
11    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
12
13    https://download.docker.com/linux/centos/docker-ce.repo
14# 阿里云源地址
15# http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
16
17# 安装 Docker CE.
18yum install -y containerd.io-1.2.10 \
19    docker-ce-19.03.4 \
20    docker-ce-cli-19.03.4
21
22# 启动 Docker 并添加开机启动
23systemctl start docker
24systemctl enable docker
25
26

配置 docker 镜像加速

 1mkdir /etc/docker
 2
 3cat > /etc/docker/daemon.json <<EOF
 4{
 5  "registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"],
 6  "exec-opts": ["native.cgroupdriver=systemd"]
 7}
 8EOF
 9
10mkdir -p /etc/systemd/system/docker.service.d
11
12# Restart docker.
13systemctl daemon-reload
14systemctl restart docker
15
16

配置 Docker, K8S 的阿里云 yum 源

 1[root@master ~]# cat >>/etc/yum.repos.d/kubernetes.repo <<EOF
 2[kubernetes]
 3name=Kubernetes
 4baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
 5enabled=1
 6gpgcheck=1
 7repo_gpgcheck=1
 8gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
 9EOF
10[root@master ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
11[root@master ~]# yum clean all
12[root@master ~]# yum repolist

Master 节点安装 kubeadm

1#安装
2yum install -y kubeadm-1.19.2 kubectl-1.19.2  kubelet-1.19.2
3
4# 启动
5systemctl enable kubelet && systemctl start kubelet

初始化主节点

 1kubeadm init --kubernetes-version=1.19.2 \
 2--apiserver-advertise-address=192.168.31.101 \
 3--image-repository registry.aliyuncs.com/google_containers \
 4--service-cidr=10.1.0.0/16 \
 5--pod-network-cidr=10.244.0.0/16
 6
 7mkdir -p $HOME/.kube
 8sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 9sudo chown $(id -u):$(id -g) $HOME/.kube/config
10
11
12kubeadm join 192.168.31.101:6443 --token z11pq3.jw48bvg0z7hui7um \
13    --discovery-token-ca-cert-hash sha256:3b5430a1b458663ec88c0e59f5b3c16d3683809994a7c3f9c2ffd353cc145054
14
15

配置环境变量

1echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

安装 flannel 网络插件

 1[root@master software]# kubectl apply -f flannel.yaml
 2[root@master software]# kubectl get po -n kube-system
 3NAME                             READY   STATUS    RESTARTS   AGE
 4coredns-6d56c8448f-7bvbp         1/1     Running   0          10m
 5coredns-6d56c8448f-jwkb4         1/1     Running   0          10m
 6etcd-master                      1/1     Running   0          11m
 7kube-apiserver-master            1/1     Running   0          11m
 8kube-controller-manager-master   1/1     Running   0          11m
 9kube-flannel-ds-kqgwb            1/1     Running   0          30s
10kube-proxy-nwtsm                 1/1     Running   0          10m
11kube-scheduler-master            1/1     Running   0          11m
12[root@master software]# kubectl get node
13NAME     STATUS   ROLES    AGE   VERSION
14master   Ready    master   12m   v1.19.2
15
16

安装 Node 节点

 1#安装
 2yum install -y kubeadm-1.19.2 kubectl-1.19.2  kubelet-1.19.2
 3
 4# 启动
 5systemctl enable kubelet && systemctl start kubelet
 6
 7
 8# 主节点生成token
 9[root@master software]# kubeadm token create --print-join-command
10kubeadm join 192.168.31.101:6443 --token bfg2ea.e0oapuae71wuzsbi     --discovery-token-ca-cert-hash sha256:3b5430a1b458663ec88c0e59f5b3c16d3683809994a7c3f9c2ffd353cc145054
11
12# 从节点加入
13kubeadm join 192.168.31.101:6443 --token bfg2ea.e0oapuae71wuzsbi     --discovery-token-ca-cert-hash sha256:3b5430a1b458663ec88c0e59f5b3c16d3683809994a7c3f9c2ffd353cc145054
14
15# 将 master 节点的 admin.conf 拷贝到 node1
16scp /etc/kubernetes/admin.conf root@node1:/etc/kubernetes/
17
18# 配置 Kubeconfig 环境变量
19echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
20source ~/.bash_profile
21
22# 安装 flannel 网络插件
23kubectl apply -f flannel.yaml
24
25# 查看集群状态在master节点上
26kubectl get nodes
27

作者:Soulboy