前言 本文主要介绍Docker和Kubernetes的安装步骤,安装Docker采用官网提供的安装方式,安装k8s采用官网提供的kubeadm方式。其中镜像地址都采用了国内阿里镜像地址。
k8s集群服务器初始化(准备工作) 关闭防火墙 1 2 systemctl stop firewalld #临时关闭 systemctl disable firewalld #永久关闭
关闭swap分区 1 2 3 4 5 6 # 临时关闭 swapoff -a # 永久关闭 vi /etc/fstab # 注释掉/dev/mapper/centos-swap swap 整行
允许 iptables 检查桥接流量 1 2 3 4 5 6 7 8 9 10 cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf br_netfilter EOF cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sudo sysctl --system
将 SELinux 设置为 permissive 模式 1 2 3 # 将 SELinux 设置为 permissive 模式(相当于将其禁用) sudo setenforce 0 #临时关闭 sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config #永久关闭
设置主机名称并在master节点添加hosts
分别修改主机名
1 2 3 4 5 hostnamectl set-hostname k8smaster01 hostnamectl set-hostname k8snode01 hostnamectl set-hostname k8snode02
在master节点添加hosts,IP改为对应主机IP
1 2 3 4 5 cat >> /etc/hosts << EOF 192.168.211.142 k8smaster01 192.168.211.143 k8snode01 192.168.211.144 k8snode02 EOF
如果集群主机日期不一致请同步日期 此处省略
参考内容 kubeadm官网安装教程
安装Docker 参考内容:Docker官网安装教程 这里选择的是centos安装
卸载旧版本 1 2 3 4 5 6 7 8 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
安装Dokcer安装包 1 sudo yum install -y yum-utils
设置镜像 1 2 3 4 5 6 7 8 9 # 官网镜像 sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo # 国内阿里镜像(推荐) sudo yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装Docker Engine 1 sudo yum install docker-ce docker-ce-cli containerd.io
启动Dokcer 1 sudo systemctl start docker
配置 Docker 守护程序 1 2 3 4 5 6 7 8 9 10 11 12 sudo mkdir /etc/docker cat <<EOF | sudo tee /etc/docker/daemon.json { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF
设置 Docker 并在启动时启用 1 2 3 sudo systemctl enable docker sudo systemctl daemon-reload sudo systemctl restart docker
安装 kubeadm、kubelet 和 kubectl 添加yum源 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 # 官网google源(不推荐) cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg exclude=kubelet kubeadm kubectl EOF # 国内阿里源(推荐) cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg exclude=kubelet kubeadm kubectl EOF
安装 kubeadm、kubelet 和 kubectl 1 sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
设置kubelet开机启动 1 sudo systemctl enable --now kubelet
在Master节点初始化平面节点 image-repository:指定国内阿里镜像
pod-network-cidr:指定pod网络(不与主机在同一网段即可)
1 sudo kubeadm init --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16
在Master节点使用kubectl工具 执行kubeadm init之后生成的,复制粘贴即可。
1 2 3 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
安装 Pod 网络附加组件 任一方式均可
flannel方式 在master中配置网络映射 1 2 3 4 # 因网站被墙,需要在/etc/hosts文件添加映射 cat >> /etc/hosts << EOF 199.232.68.133 raw.githubusercontent.com EOF
在master中下载kube-flannel.yml文件 1 wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
下载flannel docker镜像
访问:https://github.com/flannel-io/flannel/releases
下载对应版本flannel docker镜像,如flanneld-v0.14.0-amd64.docker,并上传到3台服务器。
导入docker仓库 3台机器把flannel镜像导入docker仓库
1 docker load < flanneld-v0.14.0-amd64.docker
运行flannel插件 在master机器运行flannel插件
1 kubectl apply -f kube-flannel.yml
查看k8s集群状态 1 2 3 4 5 6 # 查看所有节点是否ready kubectl get nodes # 查看flannel节点是否运行正常 kubectl get pod -n kube-system | grep flannel # 查看kube-system启动的所有pod kubectl get pod -n kube-system
参考内容 部署k8s的时候kube-flannel.yml下载不下来解决
CentOS-7.9通过kubeadm搭建k8s集群
calico方式 下载calico.yaml 1 curl https://docs.projectcalico.org/manifests/calico.yaml -O
如果使用CIDR为192.168.0.0/16,或者使用 kubeadm,不需要修改CALICO_IPV4POOL_CIDR。其他平台需要修改CALICO_IPV4POOL_CIDR
创建使用calico 1 2 3 kubectl create -f calico.yaml kubectl apply -f calico.yaml
参考内容 官网安装方式
加入node节点 执行kubeadm init之后生成的,复制粘贴即可。
1 2 kubeadm join 192.168.211.142:6443 --token nzz2t6.os75i5sh03o1l2zr \ --discovery-token-ca-cert-hash sha256:6747e5cd75d5ac8ce63694e6c8dbe32dedb0a29a2215b3b172e62efbc633e51e
测试kubernetes集群 在 Kubernetes 集群中创建一个 pod,验证是否正常运行
1 2 3 4 5 6 7 8 # 创建pod kubectl create deployment nginx --image=nginx # 暴露端口 kubectl expose deployment nginx --port=80 --type=NodePort # 执行查看 kubectl get pod,svc
执行结果
1 2 3 4 5 6 7 [root@k8smaster01 ~]# kubectl get pod,svc NAME READY STATUS RESTARTS AGE pod/nginx-6799fc88d8-hnwx9 1/1 Running 0 37m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 114m service/nginx NodePort 10.109.186.229 <none> 80:31444/TCP 6s
访问地址:http://NodeIP:Port
如我的ip为:http://192.168.211.144:31444/