部署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