1.集群配置

本次部署使用三台服务器
master:192.168.0.2
node1:192.168.0.4
node2:192.168.0.14
服务器配置均为:CentOS 7.6 64位 8核/16G/100G

2.master部署

介绍一下Docker EE和Docker CE:
Docker EE
Docker EE由公司支持,可在经过认证的操作系统和云提供商中使用,并可运行来自Docker Store的、经过认证的容器和插件。
Docker EE提供三个服务层次:
Basic 包含用于认证基础设施的Docker平台,Docker公司的支持,经过 认证的、来自Docker Store的容器与插件。
Standard 添加高级镜像与容器管理,LDAP/AD用户集成,基于角色的访问控制(Docker Datacenter)。
Advanced 添加Docker安全扫描,连续漏洞监控。
Docker CE
Docker CE是免费的Docker产品的新名称,Docker CE包含了完整的Docker平台,非常适合开发人员和运维团队构建容器APP。

1.设置主机名

hostnamectl set-hostname master

2.yum更换为国内的阿里云yum源

1.进入到yum的源目录下
 cd /etc/yum.repos.d/
2.将原来的CentOS-Base.repo进行备份
 mv CentOS-Base.repo CentOS-Base.repo.bak
3.下载替换阿里源
 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
5.生成缓存
 yum makecache
6.更新
 yum -y update

3.安装Docker CE

1.安装所需包
yum install yum-utils device-mapper-persistent-data lvm2
2.新增 Docker 仓库
yum-config-manager \
  --add-repo \
  https://download.docker.com/linux/centos/docker-ce.repo
 或者
 http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  
3.安装 Docker CE
yum install -y \
  containerd.io-1.2.13 \
  docker-ce-19.03.11 \
  docker-ce-cli-19.03.11 
4.创建 /etc/docker 目录
mkdir /etc/docker
5.设置 daemon
cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}
EOF
6.为 docker 服务创建一个 systemd 放置目录
mkdir -p /etc/systemd/system/docker.service.d
7.重启 Docker
systemctl daemon-reload
systemctl restart docker
8.设置docker开机自启
sudo systemctl enable docker 

4.前置一些操作

1.分别关闭防火墙:
systemctl stop firewalld
2.关闭防火墙自启
systemctl disable firewalld
3.关闭swap
swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab  # 永久
即在 vim /etc/fstab 中注释掉:/dev/mapper/centos-swap swap  swap  defaults    0 0

5.将桥接的IPv4流量传递到iptables的链

RHEL / CentOS 7上的一些用户报告了由于iptables被绕过而导致流量路由不正确的问题。创建/etc/sysctl.d/k8s.conf文件,添加如下内容:
1.配置
cat  >  /etc/sysctl.d/k8s.conf <<EOF
vm.swappiness = 0
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
2.使配置生效
modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf

6.添加k8s阿里云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=0
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
EOF

7.所有节点安装kubeadm,kubelet和kubectl
在这里插入图片描述在这里插入图片描述在这里插入图片描述

1.由于版本更新频繁,这里指定版本号部署:
yum list |grep kubelet
yum list |grep  kubeadm
yum list |grep  kubectl
yum list |grep  kubernetes
yum install -y kubelet-1.20.1-0 kubeadm-1.20.1-0 kubectl-1.20.1-0
systemctl enable kubelet && systemctl start kubelet
2.部署Kubernetes Master【只在master执行】
kubeadm init \
  --apiserver-advertise-address=192.168.0.2 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.20.1 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16
3.记录以下内容
kubeadm join 192.168.0.2:6443 --token aek8x6.jm00vkehjbyl3z9p \
    --discovery-token-ca-cert-hash sha256:ce7d2a231ef24f0ff39a39cca7f81d8b9542368723bf27fdd0356b83c8630532 
4.使用kubectl工具:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

8.安装Pod网络插件(CNI)- master节点,node节点加入后自动下载

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
如果报错可以尝试
kubectl apply -f https://199.232.68.133/coreos/flannel/master/Documentation/kube-flannel.yml
如果还不行可以尝试
https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml
如果还不行找文件自己写上传上去
kubectl apply -f kube-flannel.yml

9.测试
在这里插入图片描述

kubectl get nodes
kubectl get cs

出现这种情况,是/etc/kubernetes/manifests下的kube-controller-manager.yaml和kube-scheduler.yaml设置的默认端口是0,在文件中注释掉就可以了
kube-controller-manager.yaml文件修改:注释掉27行
 #  - --port=0
 kube-scheduler.yaml配置修改:注释掉19行
 #  - --port=0
systemctl restart kubelet.service
kubectl get pod -n kube-system -o wide

在这里插入图片描述在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐