CentOS7安装K8S集群
本来打算用Rancher安装,rancher安装好了之后,在master和node节点上执行命令,一直不成功。公司网管告诉我公司网络的各种限制,也没听懂,没办法,只能自己手动安装k8s集群了。记录一下成功的过程。机器配置机器ip地址配置master192.188.1.2414核、16G内存、CentOS7.8node1192.188.1.2424核、32G内存、CentOS7.8node2192.
本来打算用Rancher安装,rancher安装好了之后,在master和node节点上执行命令,一直不成功。公司网管告诉我公司网络的各种限制,也没听懂,没办法,只能自己手动安装k8s集群了。记录一下成功的过程。
机器配置
机器 | ip地址 | 配置 |
master | 192.188.1.241 | 4核、16G内存、CentOS7.8 |
node1 | 192.188.1.242 | 4核、32G内存、CentOS7.8 |
node2 | 192.188.1.243 | 4核、32G内存、CentOS7.8 |
node3 | 192.188.1.244 | 4核、32G内存、CentOS7.8 |
待安装的版本:
Docker:20.10.10、K8S:1.21.0
安装Docker
四台机器都要安装
1、设置稳定的安装源(存储库)
yum install yum-utils -y
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
2、导入证书
rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7
3、安装
#yum list docker-ce --showduplicates | sort -r
yum install -y docker-ce-20.10.10 docker-ce-cli-20.10.10 containerd.io
4、启动
systemctl start docker
systemctl enable docker
5、验证
docker version
docker run hello-world
更改主机名
更改四台机器的名称,分别是:Master、node1、node2、node3
[root@localhost ~]# hostname node1
[root@localhost ~]# bash
[root@node1 ~]#
SSH设置
master机器上,vi /etc/hosts,添加
192.168.2.10 node1
192.168.2.20 node2
192.168.2.30 node3
生成ssh公钥,并传输到3台node节点:
[root@localhost ~]# ssh-keygen
[root@localhost ~]# ssh-copy-id -i root@node1
[root@localhost ~]# ssh-copy-id -i root@node2
[root@localhost ~]# ssh-copy-id -i root@node3
传输hosts文件到3台node节点:
[root@localhost ~]# scp /etc/hosts root@node1:/etc
[root@localhost ~]# scp /etc/hosts root@node2:/etc
[root@localhost ~]# scp /etc/hosts root@node3:/etc
环境设置
在四台机器:
swapoff –a
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
vi /etc/fstab
#将分区类型为swap的一行注释掉
/dev/mapper/centos-swap swap
yum install epel-release -y
在master机器:
将桥接的IPv4流量传递到iptables的链:
vi /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
$ sysctl --system # 生效
在所有四台机器:
时间同步:
$ yum install ntpdate -y
$ ntpdate time.windows.com
安装K8S
在Master机器执行
yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0
systemctl enable kubelet
kubeadm init \
--apiserver-advertise-address=192.188.1.241 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.21.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all
- –apiserver-advertise-address 集群master地址
- –image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
- –kubernetes-version K8s版本,与上面安装的一致
- –service-cidr 集群内部虚拟网络,Pod统一访问入口
- –pod-network-cidr Pod网络,下面部署的CNI网络组件yaml中要填入这个值
命令执行成功后,会生成kubeadm join命令。
到3台node上执行
yum install --enablerepo="kubernetes" kubelet-1.21.0-0.x86_64 kubeadm-1.21.0-0.x86_64 kubectl-1.21.0-0.x86_64
kubeadm join 192.188.1.241:6443 --token 1qcuuj.z66au8xyztjx58m3 \
--discovery-token-ca-cert-hash sha256:9cd5c251200e193e8c7ded71ae74e6381a0f64dc5e0bcc401591d70e8c67d1df
这儿的kubeadm命令是刚刚master机器上kubeadm init生成的。
回到master,部署容器网络(CNI)
wget https://docs.projectcalico.org/manifests/calico.yaml
修改calico.yml文件,查找里面的CALICO_IPV4POOL_CIDR,去掉注释,将value的ip地址改为:10.244.0.0,也就是kubeadm init命令时填入的ip地址
执行命令
kubectl apply -f calico.yaml
修改配置
这时查看集群状态是:
需要等一段时间变成:
再查看pods状态,会发现有点问题:
kubectl get pods -n kube-system
因为阿里云上没有coredns这个镜像。
通过下面命令获取pod运行在哪台机器以及使用的镜像:
kubectl get pods coredns-545d6fc579-n94zl -o wide -n kube-system
kubectl get pods coredns-545d6fc579-n94zl -n kube-system -o yaml | grep image:
在pod运行的node1上拉取镜像:
docker pull coredns/coredns:1.8.0
将拉取下来的镜像改tag:
docker tag 296a6d5035e2 registry.aliyuncs.com/google_containers/coredns/coredns:v1.8.0
两个有问题的pod都执行以上两步,再回到master查看状态,成功!
更多推荐
所有评论(0)