计划逐步安装

  • 集群工具(k8s和集群镜像),在每台虚拟机服务器中分别安装

    • docker (20.10.7版本)

    • kubeadm (1.23.6)

    • kubelet (1.23.6)

    • kubectl (1.23.6)

  • 搭建Master

  • 搭建Node

一、集群工具安装

1.1 安装docker
# 1 切换镜像源
[rootmaster ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
​
# 2 查看当前镜像源中支持的docker版本
[root@master ~]# yum list docker-ce --showduplicates
​
# 3 安装最新版本的docker-ce(稳定度以及配置方便的考量)
[root@master ~]# yum install --setopt=obsoletes=0 docker-ce-20.10.7 docker-ce-cli-20.10.7  containerd.io-1.4.6 -y
​
# 4 添加一个配器文件
# Docker在认情况下使用的Cgroup Driver为cgroupfs,而kubernetes推荐使用systemd来代替cgroupfs
# 配置docker默认仓库
[root@master ~]# mkdir /etc/docker
[root@master ~]# cat <<EOF > /etc/docker/daemon.json
{
    "exec-opts": ["native.cgroupdriver=systemd"],
    "registry-mirrors":["https://kn0t2bca.mirror.aliyuncs.com"]
}
EOF
​
# 5 启动docker
[root@master ~]# systemctl restart docker
​
# 6 设置开机自启动
systemctl enable docker
1.2 安装k8s
# 编辑/etc/yum.repos.d/kubernetes.repo,添加下面的配器
#由于kubernetes的镜像源在国外,速度比较慢,这里切换成国内的镜像源
​
[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
​
#安装kubeadm、kubelet和kubectl
yum install kubeadm-1.23.6 kubelet-1.23.6 kubectl-1.23.6 -y
​
#配置kubelet的cgroup 代理模型ipvs
#编辑/etc/sysconfig/kubelet,添加下面的配置
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"
​
# 4 设器kubelet开机自启(k8s启动时会自动启动kubelet,此处设置开机自启即可)
[root@master ~]# systemctl enable kubelet

二、搭建Master和Node

下面的动作开始分化,要区分在master节点还是node节点完成

2.1 搭建Master

下面的操作只需要在 master 节点上执行即可(借助于kubeadmin会自动下载、快速安装k8s相关组件)

前提需要先下载k8s相关docker镜像资源

#创建集群
[root@master ~]# kubeadm init \
    --kubernetes-version=v1.23.6 \
    --pod-network-cidr=10.244.0.0/16  \
    --service-cidr=10.96.0.0/12  \
    --image-repository registry.aliyuncs.com/google_containers \
    --apiserver-advertise-address=192.168.28.134
​
#Your Kubernetes  control-plane has initialized successfully! 看到类似文案说明master创建成功
#执行 kubectl get nodes  仅展现一个master节点
​
#创建必要文件
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
​
#todo配置网络 should now deploy a pod network to the cluster
​
#todo Then you can join any number worker nodes by running the following on each as root
2.2 修改profile配置,增加变量
vi /etc/profile
#加入以下变量
export KUBECONFIG=/etc/kubernetes/admin.conf
source /etc/profile
2.3 搭建Node

下面的操作只需要在 node 节点上执行即可

# 将node1和node2加入master
kubeadm join 192.168.28.134:6443 --token....
​
#如果网络插件没有安装,执行 kubectl get nodes提示Not Ready
​
#查看kube-system名称空间下的所有pod列表,发现其他pod都正常, coredns处于pending挂起状态
[root@master ~]# kubectl get pod -n kube-system
NAME                             READY   STATUS    RESTARTS       AGE
coredns-6d8c4cb4d-8jnnr          0/1     Pending   0              150m
coredns-6d8c4cb4d-nj5c8          0/1     Pending   0              150m
etcd-master                      1/1     Running   1 (148m ago)   150m
kube-apiserver-master            1/1     Running   1 (148m ago)   150m
kube-controller-manager-master   1/1     Running   1 (148m ago)   150m
kube-proxy-9jwl2                 1/1     Running   1 (148m ago)   149m
kube-proxy-gclbb                 1/1     Running   1 (148m ago)   150m
kube-proxy-l8d8x                 1/1     Running   1 (148m ago)   149m
kube-scheduler-master            1/1     Running   1 (148m ago)   150m
2.4 安装网络插件

kubernetes支持多种网络插件,比如flannel、calico、canal等等,任选一种使用即可,本次选择calico

下面操作依旧只在 master 节点执行即可

# 获取calico的配器文件
[root@master ~]#wget https://docs.projectcalico.org/v3.23/manifests/calico.yaml --no-check-certificate
​
#修改calico.yml文件
CALICO_IPV4POOL_CIDR的配置项需要修改成初始化k8s集群时的service-cidr值
10.96.0.0/12 
​
#批量修改calico.yaml文件,把docker.io/的镜像路径替换掉
sed -i 's#docker.io/##g' calico.yaml
​
#为了加快速度,可以在1主2从上执行批量下载docker镜像
images=(
    calico/cni:v3.23.5
    calico/node:v3.23.5
    calico/kube-controllers:v3.23.5
)
​
for imageName in ${images[@]} ; do
    docker pull $imageName
done
​
​
#使用配置文件启动calico
[root@master ~]# kubectl apply -f calico.yaml
​
# 稍等片刻,再次查看集群节点的状态
[root@master ~]# kubectl get nodes 
​
# 查看集群信息
kubectl cluster-info

更多推荐