0 目标
- 安装k8s
- 一个master,一个worker
1 准备工作
1)关闭防火墙
systemctl stop friewalld
systemctl disable friewalld
2)关闭selinux(安全机制)
sed -i 's/enforcing/disabled/' /etc/selinux/config #永久
setenforce 0 #临时
3、关闭swap(k8s禁止虚拟内存以提高性能)
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久
swapoff -a #临时
free -m #如果swap全为0,表示已经关闭
4、host/name
vim /etc/hostname
k8s-master
k8s-worker
cat >> /etc/hosts <<EOF
192.168.1.81 k8s-master
192.168.1.82 k8s-worker
EOF
5、设置网桥参数
cat > /etc/sysctl.d/k8s <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system #生效
6、时间同步服务器
- 安装:
yum install -y chrony
- vim /etc/chrony.conf 注释掉原有server,增加下面两条:
server 210.72.145.44 iburst
server ntp.aliyun.com iburst
- 启动:
systemctl enable chronyd
systemctl restart chronyd.service
chronyc sources -v
- 修改时区
timedatectl set-timezone Asia/Shanghai
timedatectl
date
2 docker(master+worker)
- 下载:
wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
- 安装(使用20.10.8+kube1.22.2,一直失败,只好用20.10.7+kube1.21.2):
yum -y install docker-ce-20.10.7
- 配置 Docker 守护程序,尤其是使用 systemd 来管理容器的 cgroup
- fl791z1h.mirror.aliyuncs.com
mkdir /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
"registry-mirrors": ["https://fl791z1h.mirror.aliyuncs.com"]
}
EOF
- 启动
systemctl enable docker
systemctl daemon-reload
systemctl restart docker
3 k8s(master+worker)
- 库
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=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
- 下载,安装,这里使用1.22.2失败,只好用1.21.2
yum -y install kubelet-1.21.2 kubeadm-1.21.2 kubectl-1.21.2
systemctl enable kubelet.service
yum list installed | grep kubeadm
yum list installed | grep kubelet
yum list installed | grep kubectl
kubelet --version
4 初始化master
- 在81上maser
kubeadm init --apiserver-advertise-address=192.168.1.81 \
--image-repository=registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.21.2 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.9.0/16
执行结果:(末尾打印日志)
查看init后拉取的镜像
docker images
docker ps
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config``
如果不执行上一句,错误:
The connection to the server localhost:8080 was refused - did you specify the right host or port?
5 加入worker
kubeadm join 192.168.1.81:6443 --token nhj46j.ta80geswifidyv82 \
--discovery-token-ca-cert-hash sha256:56775d63c1a1e48684d4656e311dfeea5e42bc2eccdee511487a5671854ded11
6 网络配置
在master中
kubectl get nodes
**“status”=NotReady **没有准备好
- 如果无法下载,可以到我的“下载资源”中,找到下个文件。
wget https://docs.projectcalico.org/v3.8/manifests/calico.yaml
打开calico.yaml, 将192.168.0.0/16修改为10.96.0.0/12
kubectl apply -f calico.yaml
过几分钟,
**“status”=Ready **
附录
1、网络配置
- 重启网络
nmcli c reload
nmcli d reapply ens33
- 确保每个节点上 MAC 地址和 product_uuid 的唯一性
ifconfig -a
cat /sys/class/dmi/id/product_uuid
如果是复制的虚拟机,需要重新生成mac,并且修改ifcfg-enp0s3.UUID=product_uuid
cd /etc/sysconfig/network-scripts/
vi ifcfg-enp0s3
2、安装Dashboard
- 采用这个链接始终无法下载,只好到github上下载源码,然后上传recommended.yaml至centos
- 如果无法下载,可以到我的“下载资源”中,找到下个文件。
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml
然后运行
kubectl apply -f recommended.yaml
过几分钟查看pods状态
kubectl get pods --all-namespaces
- 待补充