CentOS7 部署K8S集群,最新版1.17.3-0
小白在网上找了很多关于k8s集群部署的文档,但是版本老旧,到处踩坑,终于部署成功,记录下过程。
一、准备工作
虚拟机:VMware® Workstation 15 Pro
Xhell 6:Xshell.exe: 6.0.0025
操作系统:CentOS-7
这里对虚拟机有个要求,2cpu,内存2g,不然初始化master会警告
具体的关于虚拟机安装可以看另一篇文章https://www.cnblogs.com/CoderLinkf/p/12393993.html
部署规划
192.168.3.180 k8s-master 192.168.2.156 k8s-node1
1.关闭防火墙,这点基本所有教程都有
systemctl stop firewalld
2.关闭selinux
setenforce 0
3.关闭swap
swapoff -a 临时关闭
free 可以通过这个命令查看swap是否关闭了
vim /etc/fstab 永久关闭
4.添加主机名与IP对应的关系
vim /etc/hosts
192.168.3.180 k8s-master 192.168.2.156 k8s-node1
当然,ip要改成自己的
5.将桥接的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
6.安装Docker
1)安装docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O/etc/yum.repos.d/docker-ce.repo yum -y install docker-ce
2)设置docker服务开机自启
systemctl enable docker systemctl start docker
3)查看docker版本,这里是最新版
docker --version
Docker version 19.03.6, build 369ce74a3c
7.添加阿里云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=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
8.安装kubeadm,kubelet和kubectl
yum makecache fast yum install -y kubelet kubeadm kubectl --nogpgcheck
指定版本没试过,这里直接安装最新版,并且跳过公钥检查
9.部署Kubernetes Master
1)初始化kubeadm
kubeadm init --apiserver-advertise-address=192.168.3.180 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.17.3 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16
一样的,记得改成自己的master节点ip
当出现如下结果,表示初始化顺利,这一步要等待几分钟,并且一开始没有进度提示,一度以为卡了
查看镜像
docker images
2)接下来,将初始化结果中的命令复制出来执行:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
下面的命令等会儿用来添加节点
kubeadm join 192.168.3.180:6443 --token dfug5t.cscrkl8hy8whplx7 \ --discovery-token-ca-cert-hash sha256:625f94e773c68ba673f44157e8983640a4505232c0adc0cb8a10f7c05e602c90
到此,就可以使用kubectl命令了
kubectl get node
但是是notready状态,
执行 kubectl get pods -n kube-system 命令可以看到,头两个状态是pending
10.安装flannel
1)这里,大部分文档的flannel安装链接基本都失效了,找了很久找到一个
https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml
将这个文件下载下来,ftp到root下面,然后开始执行
或者执行命令保存:wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
sed -i 's@quay.io@quay.azk8s.cn@g' kube-flannel.yml kubectl apply -f kube-flannel.yml
2)查看是否部署成功
kubectl get pods -n kube-system
3)再次执行 kubectl get node 命令,可以看到,状态是ready
安装失败了,怎么清理环境重新安装啊?执行一条命令:
kubeadm reset
然后重新初始化即可
11.Node节点加入集群
node节点虚拟机,执行1-8步,然后执行master节点初始化kubeadm时的命令
kubeadm join 192.168.3.180:6443 --token dfug5t.cscrkl8hy8whplx7 \ --discovery-token-ca-cert-hash sha256:625f94e773c68ba673f44157e8983640a4505232c0adc0cb8a10f7c05e602c90
如果一直卡在 “Running pre-flight checks” 上,则很可能是时间未同步,token失效导致
可以在master节点执行
kubeadm token list
kubeadm token create
重新生成即可
openssl x509 -pubkey -
in
/etc/kubernetes/pki/ca
.crt | openssl rsa -pubin -outform der 2>
/dev/null
| openssl dgst -sha256 -hex |
sed
's/^.* //'
kubeadm reset<br>$ kubeadm
join
192.168.38.11:6443 --token unnscz.aq2r62cuc14w27oa \ --discovery-token-ca-cert-
hash
sha256:8b79b6461e58c07333cb2851fe74fd4374af8bbbe0bf7e040b415b86ad4fb89d
12.测试kubernetes集群
在master节点中
kubectl create deployment nginx --image=nginx kubectl expose deployment nginx --port=80 --type=NodePort kubectl get pod,svc
然后执行 kubectl get pods 查看
kubectl get pod,svc -o wide
通过浏览器访问:http://192.168.3.180:32049 正常访问
参考文章: