1.安装docker
-
添加docker镜像到本地:
wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
然后输入命令:
yum install -y --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7
-
修改配置文件:
mkdir /etc/docker # Docker在默认情况下使用的Cgroup Driver为cgroupfs,而kubernetes推荐使用systemd来代替cgroupfs cat <<eof > /etc/docker/daemon.json { "storage-driver": "devicemapper", "exec-opts": ["native.cgroupdriver=systemd"], "registry-mirrors": [ "https://f633c540bf7445e6b69d3a41fa95b3da.mirror.swr.myhuaweicloud.com" ] } eof
cat << eof > /etc/sysconfig/docker OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false' eof
-
重启,并设置开机自启:
systemctl restart docker && systemctl enable docker
2.安装cri-Dockerd:
-
下载:
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.2/cri-dockerd-0.3.2-3.el7.x86_64.rpm
-
安装:
yum install -y cri-dockerd-0.3.2-3.el7.x86_64.rpm
-
修改配置文件:
vi /usr/lib/systemd/system/cri-docker.service # 修改10行的 ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
-
重启,并设置开机自启:
systemctl restart cri-docker && systemctl enable cri-docker
3.安装k8s组件:
-
配置k8syum仓库:
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
-
安装kubeadm、kubelet和kubectl
组件 说明 kubeadm 搭建kubernetes集群的工具 kubelet 负责维护容器的生命周期,即通过控制docker,来创建、更新、销毁容器 kubectl 用来与集群通信的命令行工具。 yum install --setopt=obsoletes=0 kubelet-1.27.6 kubeadm-1.27.6 kubectl-1.27.6 -y
-
编辑/etc/sysconfig/kubelet,配置kubelet的cgroup
cat <<eof > /etc/sysconfig/kubelet KUBELET_CGROUP_ARGS="--cgroup-driver=systemd" KUBE_PROXY_MODE="ipvs" eof
-
设置kubelet开机自启
systemctl enable kubelet
4.准备集群镜像:
-
在安装kubernetes集群之前,必须要提前准备好集群需要的镜像,所需镜像可以通过下面命令查看
kubeadm config images list
-
下载镜像:此镜像在kubernetes的仓库中,由于网络原因,无法连接,下面提供了一种替代方案下载这些镜像
kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers
5.集群初始化:
-
在 master 节点:
-
创建集群
# --apiserver-advertise-address:集群入口master的ip kubeadm init \ --apiserver-advertise-address=192.168.235.131 \ --image-repository registry.aliyuncs.com/google_containers \ --service-cidr=10.96.0.0/16 \ --pod-network-cidr=10.244.0.0/16 \ --kubernetes-version v1.27.6 \ --cri-socket=unix:///var/run/cri-dockerd.sock
# 如果出现报错,可以清理集群初始化产生的文件重新尝试 rm -rf /etc/kubernetes/* rm -rf /var/lib/etcd/* rm -rf ~/.kube/*
# 如果忘记添加节点密钥,可以选择重新生成 kubeadm token create --print-join-command
# 成功执行后将给出将node节点加入集群的命令 kubeadm join 192.168.235.131:6443 --token 4u7bkb.edx2uq5d27biwg2u \ --discovery-token-ca-cert-hash sha256:62e2cec9f1db27ff2ec5b579f01fad00c6fb8cb56f6e749c80dfcb4cbb5c5a28
-
创建必要文件(创建后用户可使用kubectl命令)
mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config
-
-
在 node 节点 ,将node节点加入集群(命令各不相同,需要在住master节点创建集群后获取命令)
kubeadm join 192.168.235.131:6443 --token 4u7bkb.edx2uq5d27biwg2u \ --discovery-token-ca-cert-hash sha256:62e2cec9f1db27ff2ec5b579f01fad00c6fb8cb56f6e749c80dfcb4cbb5c5a28
-
在 master 节点,在查看集群状态 此时的集群状态为NotReady,这是因为还没有配置网络插件
[root@master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION master NotReady master 12m v1.17.4 node1 NotReady <none> 2m11s v1.17.4 node2 NotReady <none> 10s v1.17.4