一、部署准备
服务器3台
服务器 | 系统 | 名称 |
---|---|---|
192.168.50.230 | CentOS Linux release 7.9.2009 (Core) | k8s-master |
192.168.50.231 | CentOS Linux release 7.9.2009 (Core) | k8s-node1 |
192.168.50.232 | CentOS Linux release 7.9.2009 (Core) | k8s-node2 |
二、系统初始化
1、k8s-master服务器配置hosts文件
[root@k8s-master cyz]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.50.230 k8s-master
192.168.50.231 k8s-node1
192.168.50.232 k8s-node2
以下三台服务器都要配置
2、配置阿里云yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
3、设置iptables
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
4、关闭swap
swapoff -a
注释掉/etc/fstab关于swap分区挂在行
[root@k8s-master cyz]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Aug 24 13:54:39 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=54eea75f-31ae-4b4f-b946-b9f9dfbaeb9c /boot xfs defaults 0 0
#/dev/mapper/centos-swap swap swap defaults 0 0
5、关闭防火墙
# 停止firewall
systemctl stop firewalld.service
# 禁止firewall开机启动
systemctl disable firewalld.service
6、关闭SELINUX
#暂时关闭
setenforce 0
#永久关闭,需重启
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
三、部署docker-ce-19.03.13-3.el7.x86_64(三台都要)
#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
#安装esp源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#安装docker-ce
yum install -y docker-ce-19.03.13-3.el7.x86_64
#设置开启启动并启动docker
systemctl enable docker && systemctl stat docker
#设置docker阿里云仓库源
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://zo120aja.mirror.aliyuncs.com"]
}
#重启docker
systemctl restart docker
四、安装kubeadm、kubectl、kubelet(三台都要)
yum install -y kubelet-1.18.0-0.x86_64 kubeadm-1.18.0-0.x86_64 kubectl-1.18.0-0.x86_64 -y
#设置kubelet开机自启动
systemctl enable kubelet.service
四、部署k8s集群
在k8s-master初始化集群
kubeadm init --apiserver-advertise-address=192.168.50.230 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
在k8s-node1节点上执行
[root@k8s-node1 cyz]# kubeadm join 192.168.50.230:6443 --token yoqu6r.3nujqo43vu0pbcf5 --discovery-token-ca-cert-hash sha256:cc9657dc88d2512a9255e190e4f6ab35abf56bd7452348f04095bfc2777218a0
在k8s-node2节点上执行
[root@k8s-node2 cyz]# kubeadm join 192.168.50.230:6443 --token yoqu6r.3nujqo43vu0pbcf5 --discovery-token-ca-cert-hash sha256:cc9657dc88d2512a9255e190e4f6ab35abf56bd7452348f04095bfc2777218a0
五、安装网络插件:CNI
#下载calico的yaml文件
wget https://docs.projectcalico.org/v3.8/manifests/calico.yaml
#应用配置文件
kubectl apply -f calico.yaml
#在k8s-master上查看pod运行
[root@k8s-master cyz]# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
default nginx-f89759699-7jfj7 1/1 Running 0 56m
kube-system calico-kube-controllers-75d555c48-r8n8l 1/1 Running 0 60m
kube-system calico-node-j52sm 1/1 Running 0 60m
kube-system calico-node-nmf7z 1/1 Running 0 60m
kube-system calico-node-qt9r7 1/1 Running 0 60m
kube-system coredns-7ff77c879f-hlvlg 1/1 Running 0 77m
kube-system coredns-7ff77c879f-x6w2d 1/1 Running 0 77m
kube-system etcd-k8s-master 1/1 Running 0 77m
kube-system kube-apiserver-k8s-master 1/1 Running 0 77m
kube-system kube-controller-manager-k8s-master 1/1 Running 0 77m
kube-system kube-proxy-6hkp5 1/1 Running 0 66m
kube-system kube-proxy-p4sxn 1/1 Running 0 66m
kube-system kube-proxy-qq66p 1/1 Running 0 77m
kube-system kube-scheduler-k8s-master 1/1 Running 0 77m
#所有node节点状态为Ready
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 78m v1.18.0
k8s-node1 Ready <none> 68m v1.18.0
k8s-node2 Ready <none> 68m v1.18.0
# 集群健康
[root@k8s-master cyz]# kubectl get cs
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-0 Healthy {"health":"true"}
# 查看资源
[root@k8s-master cyz]# kubectl api-resources
NAME SHORTNAMES APIGROUP NAMESPACED KIND
bindings true Binding
componentstatuses cs false ComponentStatus
configmaps cm true ConfigMap
endpoints ep true Endpoints
events ev true Event
limitranges limits true LimitRange
namespaces ns false Namespace
nodes no false Node
persistentvolumeclaims pvc true PersistentVolumeClaim
persistentvolumes pv false PersistentVolume
pods po true Pod
.......