K8s 集群部署过程文档

1.环境部署之前要做的事情:

========================
ip 分配:
一台阿里云ECS
master0:
192.168.8.169
node01:
192.168.8.170
node02:
192.168.8.171
========================
永久修改主机名:
hostnamectl set-hostname master01
reboot

hostnamectl set-hostname node01
reboot

hostnamectl set-hostname node02
reboot
========================
更新系统软件包:
>: yum update -y
# 安装软件管理包和可能使用的依赖
>: yum -y groupinstall "Development tools"
>: yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel
# 检测是否成功:git依赖安装是否成功 pass
# 安装一些软件包
yum install bash-completion vim wget telnet sysstat net-tools lsof-y
========================
# 禁用swap
swapoff -a # 临时修改,重启后恢复

[root@master01 ~]# vim /etc/fstab # 配置文件 永久修改,修改

[root@master01 ~]# vim /etc/fstabK8s 集群部署过程文档[root@master01 ~]# free -gK8s 集群部署过程文档Swap 显示都为0表示修改成功了。

# 安装 docker 和 docker-compose 必备4条命令
[root@master01 ~]# sudo yum update
[root@master01 ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2
[root@master01 ~]# sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@master01 ~]# sudo yum install docker-ce -y

# 查看你安装的版本
[root@master01 ~]#docker -v 
### Docker version 20.10.5, build 55c4c88 

# 启动 docker 服务端:
[root@master01 ~]#systemctl start docker    # 启动
[root@master01 ~]#systemctl stop docker     # 停止
[root@master01 ~]#systemctl restart docker  # 重启

# 安装docker-compose
[root@master01 ~]# curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
[root@master01 ~]# sudo chmod +x /usr/local/bin/docker-compose # 虚拟机必须执行该命令 否则没权限
[root@master01 ~]# docker-compose -v
### docker-compose version 1.25.0, build 0a186604

######》node01 和 node02 步骤一样的 - 要做配置《######
# docker 换源
#1、修改源命令
vim /etc/docker/daemon.json

#2、 添加源
{
"registry-mirrors": [
"https://kfwkfulq.mirror.aliyuncs.com",
"https://2lqq34jg.mirror.aliyuncs.com",
"https://pee6w651.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
"dns": ["8.8.8.8","8.8.4.4"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver""json-file",
"log-opts": {
    "max-size""100m"
  },
"storage-driver""overlay2"
}

#3、重启docker服务
systemctl daemon-reload
systemctl restart docker

######》node01 和 node02 步骤一样的 - 要做配置《######
K8s 集群部署过程文档
在这里插入图片描述

2.安装运行时

K8s 集群部署过程文档这里我们选择 安装 Docker,此步骤已完成。

3.安装 kubeadm, kubelet, kubectl安装方式,箭头所指:K8s 集群部署过程文档

mkdir k8s_install/  && cd k8s_install/
mkdir k8s_install_pkg && cd k8s_install_pkg
# 访问该网址下载
# 安装CNI插件
https://github.com/containernetworking/plugins/releases/download/v0.8.2/cni-plugins-linux-amd64-v0.8.2.tgz

#
 安装crictl
https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.22.0/crictl-v1.22.0-linux-amd64.tar.gz

#
 安装 kubeadm kubelet kubectl
https://storage.googleapis.com/kubernetes-release/release/v1.19.14/bin/linux/amd64/kubeadm
https://storage.googleapis.com/kubernetes-release/release/v1.19.14/bin/linux/amd64/kubelet
https://storage.googleapis.com/kubernetes-release/release/v1.19.14/bin/linux/amd64/kubectl

#
 安装 kubelet.service 或谷歌搜 kubelet.service 点击github master raw 右上角
### 这是没注意版本的错误写法,注个意
#https://raw.githubusercontent.com/kubernetes/release/master/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service
### 注意版本是v0.4.0,在master分支右边点击 tag找到v0.4.0即可
https://raw.githubusercontent.com/kubernetes/release/v0.4.0/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service

#
 安装 10-kubeadm.conf 或谷歌搜 10-kubeadm.conf 点击github master raw 右上角
### 这是没注意版本的错误写法,注个意
# https://raw.githubusercontent.com/kubernetes/release/master/cmd/kubepkg/templates/latest/deb/kubeadm/10-kubeadm.conf

#
## 注意版本是v0.4.0,在master分支右边点击 tag找到v0.4.0即可
https://raw.githubusercontent.com/kubernetes/release/v0.4.0/cmd/kubepkg/templates/latest/deb/kubeadm/10-kubeadm.conf

下载好后截图如下:K8s 集群部署过程文档

cd /root/k8s_install
vim k8s_install.sh

复制粘贴 以下命令到 k8s_install.sh里, 安装的完整命令如下:

#!/bin/sh
K8S_INSTALL_PKG=~/k8s_install/k8s_install_pkg
CNI_VERSION="v0.8.2"
ARCH="amd64"
sudo mkdir -p /opt/cni/bin
# curl -L "https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-${ARCH}-${CNI_VERSION}.tgz" | sudo tar -C /opt/cni/bin -xz
tar -zxvf $K8S_INSTALL_PKG/cni-plugins-linux-${ARCH}-${CNI_VERSION}.tgz -C  /opt/cni/bin

DOWNLOAD_DIR=/usr/local/bin
sudo mkdir -p $DOWNLOAD_DIR

CRICTL_VERSION="v1.22.0"
ARCH="amd64"
# curl -L "https://github.com/kubernetes-sigs/cri-tools/releases/download/${CRICTL_VERSION}/crictl-${CRICTL_VERSION}-linux-${ARCH}.tar.gz" | sudo tar -C $DOWNLOAD_DIR -xz
tar -zxvf $K8S_INSTALL_PKG/crictl-${CRICTL_VERSION}-linux-${ARCH}.tar.gz -C $DOWNLOAD_DIR

RELEASE="v1.19.14"
ARCH="amd64"
cd $DOWNLOAD_DIR
# sudo curl -L --remote-name-all https://storage.googleapis.com/kubernetes-release/release/${RELEASE}/bin/linux/${ARCH}/{kubeadm,kubelet,kubectl}
cd $K8S_INSTALL_PKG
cp kubeadm kubelet kubectl $DOWNLOAD_DIR/
cd $DOWNLOAD_DIR
sudo chmod +x {kubeadm,kubelet,kubectl}

RELEASE_VERSION="v0.4.0"
# curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service
cat $K8S_INSTALL_PKG/kubelet.service | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service
sudo mkdir -p /etc/systemd/system/kubelet.service.d
#curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
cat $K8S_INSTALL_PKG/10-kubeadm.conf | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

systemctl enable --now kubelet

以上命令含义请参考 URL

然后截图进度如下:K8s 集群部署过程文档执行命令:

[root@master01 k8s_install]# chmod +x k8s_install.sh

K8s 集群部署过程文档然后执行命令:

[root@master01 k8s_install]# ./k8s_install.sh 

正常的输出:K8s 集群部署过程文档成功的标志是:执行命令:

[root@master01 k8s_install]# kubeadm version

K8s 集群部署过程文档能看到这个输出就说明 kubeadm 安装成功了。执行命令:

[root@master01 k8s_install]# kubectl version

版本是1.19.14,有个连接拒绝的报错,因为目前没有通过 kubeadm 去 安装  K8s 集群,所以它报了拒绝的提示信息:K8s 集群部署过程文档

[root@master01 k8s_install]# systemctl status kubelet

执行结果:K8s 集群部署过程文档结果说明:红色代码提示退出同样的道理,因为我们还没有  安装  K8s 集群,安装之后 kubelet 就能跑起来了。

4.使用 kubeadm 创建集群执行命令:

[root@master01 ~]# kubeadm init -h

重点关注以下参数:

[root@master01 ~]# kubeadm init --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=10.224.0.0/16 --kubernetes-version=v1.19.14 --apiserver-advertise-address=192.168.8.169 

虚拟机里执行上述命令会报错:

W0816 22:16:49.498476   23127 configset.go:348] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
[init] Using Kubernetes version: v1.19.14
[preflight] Running pre-flight checks
 [WARNING Firewalld]: firewalld is active, please ensure ports [6443 10250] are open or your cluster may not function correctly
 [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
 [WARNING FileExisting-socat]: socat not found in system path
 [WARNING SystemVerification]: this Docker version is not on the list of validated versions: 20.10.17. Latest validated version: 19.03
 [WARNING Hostname]: hostname "master01" could not be reached
 [WARNING Hostname]: hostname "master01": lookup master01 on 192.168.8.1:53: no such host
error execution phase preflight: [preflight] Some fatal errors occurred:
 [ERROR FileExisting-conntrack]: conntrack not found in system path
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
To see the stack trace of this error execute with --v=5 or higher

这么做解决问题:(1)关闭防火墙

# 临时关闭防火墙 在master node01 node02上都执行
sudo systemctl stop firewalld
# 打开防火墙
#sudo systemctl start firewalld

(2)--ignore-preflight-errors=all

[root@master01 ~]# kubeadm init --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=10.224.0.0/16 --kubernetes-version=v1.19.14 --apiserver-advertise-address=192.168.8.169 --ignore-preflight-errors=all

参考解决问题链接

解决效果:

K8s 集群部署过程文档继续走,

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

K8s 集群部署过程文档执行命令 查看节点:

kubectl get node

K8s 集群部署过程文档STATUS 为什么是 NotReady ?我们执行以下命令查看原因:

kubectl get pod -A
K8s 集群部署过程文档
在这里插入图片描述

分析原因:Pending 状态是因为我们没有安装网络插件。

下一步行动:安装网络插件 kube-flannel.yml 下载地址:

https://raw.githubusercontent.com/flannel-io/flannel/release/v0.14.1/Documentation/kube-flannel.yml

K8s 集群部署过程文档K8s 集群部署过程文档命令如下:

[root@master01 ~]# cd k8s_install/k8s_install_pkg/
[root@master01 k8s_install_pkg]# ls 
[root@master01 k8s_install_pkg]# kubectl apply -f kube-flannel.yml 

效果:K8s 集群部署过程文档

问题:flannel  状态为 Init:ImagePullBackOff

原因:查看 kube-flannel.yml 文件时发现 quay.io/coreos/flannel:v0.14.0,quay.io 网站目前国内无法访问。K8s 集群部署过程文档

做法:在 https://github.com/coreos/flannel/releases 中下载 flanneld-v0.14.0-amd64.docker 导入到docker中

# 下载链接
https://github.com/flannel-io/flannel/releases/download/v0.14.0/flanneld-v0.14.0-amd64.docker
K8s 集群部署过程文档
在这里插入图片描述

然后 在 master01上 load 镜像

[root@master01 k8s_install_pkg]# docker load < flanneld-v0.14.0-amd64.docker

K8s 集群部署过程文档docker load 使用指南

然后执行:

kubectl get pod -n kube-system
K8s 集群部署过程文档
在这里插入图片描述
[root@master01 k8s_install_pkg]# kubectl get node
K8s 集群部署过程文档
在这里插入图片描述

可以看到,成功加载镜像后,再次查看 pod 变成Running状态,node 也是Ready状态。

到这里 master节点就创建成功了,

然后继续操作:master0: 192.168.8.169 node01: 192.168.8.170 node02: 192.168.8.171

[root@master01 k8s_install_pkg]# cd ~
[root@master01 ~]# scp -r k8s_install root@192.168.8.170:~/

K8s 集群部署过程文档继续:

[root@master01 ~]# scp -r k8s_install root@192.168.8.171:~/
K8s 集群部署过程文档
在这里插入图片描述

到这里进度如下:K8s 集群部署过程文档

然后执行:

[root@node01 ~]# cd k8s_install/
[root@node01 k8s_install]# ls
k8s_install_pkg  k8s_install.sh
[root@node01 k8s_install]# ./k8s_install.sh

执行成功:K8s 集群部署过程文档在 master 节点初始化的时候有条重要的命令:

kubeadm join 192.168.8.169:6443 --token 5uob4q.d706eoeiuc67a4ov 
    --discovery-token-ca-cert-hash sha256:8ab6ba1597e7f6b0406d61463ebb196b1191ece3a073f83d4e4547cb9e0becb1 

将该命令拷贝到 node01 节点上:K8s 集群部署过程文档遇到问题不要慌,我们有 debug 的能力,解决问题见图中标亮的部分。看提示信息我们要安装 conntrack 依赖:做法:

[root@node01 k8s_install]# yum install conntrack -y

看到提示信息 :

[ERROR Swap]: running with swap on is not supported. Please disable swap

做法:注释掉【见master做法,往上翻,不赘述了】这里多说一个技巧,让 node02先睡眠,为node01腾出内存空间,保证node01配置的完整和准确性!!!K8s 集群部署过程文档或者使用命令:

swapoff -a 

然后执行:

[root@node01 k8s_install]# kubeadm join 192.168.8.169:6443 --token 5uob4q.d706eoeiuc67a4ov     --discovery-token-ca-cert-hash sha256:8ab6ba1597e7f6b0406d61463ebb196b1191ece3a073f83d4e4547cb9e0becb1 --ignore-preflight-errors=all

然后输出:K8s 集群部署过程文档原因是什么?K8s 集群部署过程文档我们没有给 node01 节点配置 docker换源,配置好之后解决。【换源命令直接复制文章开头部分】

解决:提示节点已经加入成功了:K8s 集群部署过程文档

[root@master01 ~]# kubectl get nodes

可以看到,node01 STATUS 是 Ready:K8s 集群部署过程文档同样的配置思路,配置node02节点。小技巧:由于搭建集群环境对内存有要求,同时开3台虚拟机我的机子比较卡,内存不够用。我们可以开启 master01 和 node 01,让 node02 睡眠,先把 master01和 node01配置好, 然后再 让node01睡眠,开启node02,然后配置过程跟配置node01一样的。注意 关闭 node02 的 swapoff 和下载 conntrack 和 配置 docker换源,其他的没啥问题。

K8s 集群部署过程 到此就完结了,感谢 CSDN 的推荐,感谢 网友的点赞关注,我会继续输出干货的技术文章的。

关注我,为思考点赞!

原创说明:本文由我在CSDN首发,属于原创,现将文章搬运至公众号。


原创证明:只有原创才有编辑 / 创作的权限。

K8s 集群部署过程文档



原文始发于微信公众号(基根奋斗营):K8s 集群部署过程文档

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/104719.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!