kubernates 集群实战-搭建集群

上篇主要介绍的k8s的各种概念以及前期环境要求准备等,这篇主要是基于三台服务器搭建k8s 集群环境;

目录

第一步:初始化服务器

第二步: 所有节点安装Docker/kubeadm/kubelet

1. docker 安装

2.添加阿里云YUM软件源

3.安装kubeadm,kubelet和kubectl

第三步:初始化Master 节点

第四步: 安装网络插件

第五步:在工作节点上执行加入操作

部署故障总结


本次采用基于kubeadm 部署集群工具来快速部署实现;

第一步:初始化服务器

#检查是否  安装开放源 wget命令工具;
#  永久关闭防火墙
   systemctl stop firewalld
   systemctl disable firewalld
 # 永久关闭selinux
   sed -i 's/enforcing/disabled/' /etc/selinux/config 
 # 永久关闭swap
   swapoff -a && sysctl -w vm.swappiness=0
   sed -ri 's/.*swap.*/#&/' /etc/fstab 
 # 根据规划设置主机名
    hostnamectl set-hostname <hostname>
# 使用 hostname 命令查看是否设置成功

# 在master添加hosts (注意只在master 执行)
cat >> /etc/hosts << EOF
10.0.4.16  k8s-master
10.0.4.15  k8s-node1
10.0.4.11  k8s-node2
EOF
  

# 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
 # 生效
sysctl --system

# 时间同步 以下是centos 7 的同步方式
yum install ntpdate -y
ntpdate time.windows.com
# 时间同步 在CentOS8.0中默认不再支持ntp软件包,使用的是chrony。
systemctl stop chronyd       #停止chronyd服务
systemctl start chronyd      #开始chronyd服务
systemctl restart chronyd    #重启chronyd服务
systemctl status chronyd     #查看chronyd服务状态
systemctl enable chronyd     #开机启动chronyd服务
systemctl disable chronyd    #禁止开机启动chronyd服务

chronyc sources –v      #查看时间同步源,查看时间同步进度
    #结果解释: *说明时间同步完成,如果为?说明不成功,检查防火墙再看看chronyd有没有重启。
chronyc sourcestats -v        #查看时间同步源状态:
timedatectl set-local-rtc 1   #硬件时间默认为UTC:
timedatectl set-ntp yes       #启用NTP时间同步:
chronyc tracking              #校准时间服务器:

网上设置方法:https://www.ecs086.com/news?id=210

查看命令 timedatectl

部分效果图:

第二步: 所有节点安装Docker/kubeadm/kubelet

1. docker 安装

$ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
$ yum -y install docker-ce-18.06.1.ce-3.el7

$ systemctl enable docker && systemctl start docker
$ docker --version

$ cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "insecure-registries": ["0.0.0.0/0"]
}
EOF

$ systemctl restart docker

2.添加阿里云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

3.安装kubeadm,kubelet和kubectl

$ yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
$ systemctl enable kubelet && systemctl start kubelet

// 自动补全
source <(kubectl completion bash)

第三步:初始化Master 节点

$ kubeadm init  --apiserver-advertise-address=10.0.4.16 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0  --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16  --ignore-preflight-errors=Swap  --ignore-preflight-errors=NumCPU

命令解释:

// --apiserver-advertise-address 表示API 服务器所公布的其正在监听的 IP 地址。如果未设置,则使用默认网络接口

// --image-repository 拉取的镜像仓库地址

// --kubernetes-version 版本 // --service-cidr 为服务的虚拟 IP 地址另外指定 IP 地址段 默认值:"10.96.0.0/12"

// --pod-network-cidr 指明 pod 网络可以使用的 IP 地址段

效果如图表示成功

1.master 上执行 安装 

mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

第四步: 安装网络插件

//安装cni
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

systemctl status flanneld.service
// 查看
kubectl get pods -n kube-system

第五步:在工作节点上执行加入操作

kubeadm join --token ac6ep9.diols9r7474gx6by 10.0.4.16:6443 --discovery-token-ca-cert-hash sha256:aee5f485be60600ecd9725ea187f53656c812a9d5e6d059aa3361046b57244d2--cri-socket=/run/containerd/containerd.sock  -v=10

到此 集群搭建基本完成,通过kubectl get node 查看节点的状态; 后续介绍在集群中部署搭建开发环境等;

部署故障总结

1.安装工具报错

1.

 解决办法:

vim /etc/docker/daemon.json

加入

{
 "exec-opts":["native.cgroupdriver=systemd"]
}

重启:systemctl restart docker

2.[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd".

解决办法: 

Warning:detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd"._仲夏宁叶香的博客-CSDN博客

3.错误描述:

coredns-7f9c544f75-2sjs2一直处于ContainerCreating

 解决办法:

下载fannel 网络插件安装即可

4.错误描述如图 

 解决办法

在node 中创建目录 /etc/cni/net.d

从master 采用scp命令复制文件

scp k8s-master:/etc/cni/net.d/* /etc/cni/net.d

猜你喜欢

转载自blog.csdn.net/zy_jun/article/details/124571996