1、搭建三台服务器
1)服务器要求
- 系统:Linux系统,如CentOS 7;
- CPU:2个;
- 内存:2 GB;
- 磁盘空间:50GB;
2、系统初始化
注意:以下操作均需在三台服务器上执行
## 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
## 关闭selinux(选其一)
sed -i 's/enforcing/disabled/' /etc/selinux/config ## 永久关闭
setenforce 0 ## 临时关闭
## 关闭swap(选其一)
swapoff -a ## 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab ## 永久
## 根据规划设置主机名
hostnamectl set-hostname <hostname>
## 我给三台服务器分别设置为k8smaster、k8snode1、k8snode2
## 在k8smaster服务器上,执行
hostnamectl set-hostname k8smaster
## 在k8snode1服务器上,执行
hostnamectl set-hostname k8snode1
## 在k8snode2服务器上,执行
hostnamectl set-hostname k8snode2
## 在master中添加hosts,将下面的IP修改为实际对应的IP
cat >> /etc/hosts << EOF
192.168.10.131 k8smaster
192.168.10.132 k8snode1
192.168.10.133 k8snode2
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 -y ntpdate
ntpdate time.windows.com
3、安装Docker
注意:以下操作均需在三台服务器上执行
## 查看当前的内核版本,官方建议 3.10 以上,3.8以上貌似也可
uname -r
## 更新 yum 包
yum -y update
## 卸载旧版本(如果之前安装过的话)
yum -y remove docker docker-common docker-selinux docker-engine
## 删除docker(如果之前安装过的话)
yum remove -y containerd.io.x86_64 docker-ce.x86_64 docker-ce-cli.x86_64
## 安装需要的软件包, yum-util 提供yum-config-manager功能,另两个是devicemapper驱动依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
## 设置 yum 源(阿里仓库)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
## 查看可用版本有哪些
yum list docker-ce --showduplicates | sort -r
## 选择一个版本并安装
yum -y install docker-ce ## 安装最新版本
yum -y install docker-ce-19.03.9 docker-ce-cli-19.03.9 containerd.io-19.03.9 ## 安装指定版本
## 启动 Docker 并设置开机自启
systemctl start docker
systemctl enable docker
## 设置docker国内镜像
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
EOF
## 重启docker
systemctl restart docker
4、添加阿里云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
5、安装kubeadm、kubectl和kubelet
注意:以下操作均需在三台服务器上执行
## kubernetes的版本需与docker一致(docker是19版本的那么kubernetes也需要装19版本的)
yum install -y kubelet-1.19.0 kubeadm-1.19.0 kubectl-1.19.0
systemctl enable kubelet
6、部署master节点
以下操作仅在master节点执行
执行以下脚本:
## 将--apiserver-advertise-address的IP地址修改为master节点的IP地址
kubeadm init \
--apiserver-advertise-address=192.168.10.131 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.19.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节点;
7、将node节点加入集群
以下操作仅在node节点执行
master节点初始化完成后,还会提示以下指令:
在两个子节点上执行上述指令,将子节点加入集群中;
kubeadm join 192.168.10.131:6443 --token g247ny.vcwjcmbvevxyt6jf \
--discovery-token-ca-cert-hash sha256:82a0d9119d0b291c7229cb641b5f2fb8a241b69f1d88bad312bb64e8b7a7a4a8
加入完成后,使用kubectl get nodes查看节点:
注意:
1、默认token有效期为24小时,当过期之后,该token就不可用了。这时就需要重新创建token,执行以下命令:
kubeadm token create --print-join-command,然后将生成的token替换掉上述命令中的Token。
8、部署CNI网络插件
下载CNI网络插件:
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
部署kube-flannel.yaml:
kubectl apply -f kube-flannel.yaml
部署完成后,查看节点状态:
kubectl get nodes
kubectl get pods -n kube-system
可以看到集群的状态已经变成Ready了,集群部署完成。
9、测试集群
在Kubernetes集群中创建一个pod,验证是否正常运行:
## 部署
kubectl create deployment nginx --image=nginx
## 生成服务,对外暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort
## 查看信息
kubectl get pod,svc