CentOS7上安装Kubernetes1.18版本的master和node节点
目录
Kubernetes需要最低双核CPU
1 安装kebeadm和相关工具
1.1 安装docker
# 1 下载阿里云镜像docker-ce.repo
wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 2 安装docker
# 2.1 安装阿里云yum仓库中的最新稳定版本
yum -y install docker-ce
# 2.2 安装指定版本的docker
# 卸载已安装的docker
yum remove docker-ce*
# 查询可用版本
yum list docker-ce --showduplicates | sort -r
# 安装 19.03.9的版本(因下面安装的Kubernetes v1.18.20版本)
yum install -y docker-ce-19.03.9-3.el7
# 3 设置Docker镜像加速器
mkdir -p /etc/docker/
vim /etc/docker/daemon.json
# 插入以下内容:国内镜像地址:网易|ustc|中国区官方镜像(下载kubernetes需要用到)
{
"registry-mirrors": [
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com"
]
}
# 4 启动Docker服务并设置开机自启动
systemctl start docker & systemctl enable docker
# 5 输出docker信息
docker info
# 6 输出docker版本
docker version
1.2 修改服务器主机名
# master 主机名修改
hostnamectl set-hostname k8s-master
# node 主机名修改
hostnamectl set-hostname k8s-node
1.3 关闭防火墙
# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld
1.4 关闭seliunx
# 临时关闭
setenforce 0
# 永久关闭--修改配置文件关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
1.5 关闭swap
# 临时关闭
swapoff -a
# 永久关闭--修改配置文件
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# free命令查看
free -m
1.6 安装kubelet、kubeadm、kubectl
# 打开yum配置文件
vim /etc/yum.repos.d/kubernetes.repo
# 插入以下内容
[kubernetes]
name=Kubernetes Repository
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
# 安装kubelet、kubeadm、kubectl 最新的稳定版本
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
# 安装kubelet、kubeadm、kubectl v1.18.20版本
yum install -y kubelet-1.18.20 kubeadm-1.18.20 kubectl-1.18.20
# 启动kubelet服务并设置开机自启动
systemctl enable kubelet && systemctl start kubelet
2 下载Kubernetes的相关镜像
安装v1.18.20版本的Kubernetes
# 创建Kubernetes的配置目录
mkdir -p /etc/kubernetes/
# 输出kubeadm init默认参数文件的内容并输出到 init.defalut.yaml文件中
kubeadm config print init-defaults > init.default.yaml
# 打开init-config.yaml文件,用来下载Kubernetes
cp init.default.yaml kubernetes1.18.20.master.yaml
vim kubernetes1.18.20.master.yaml
# 修改以下内容
localAPIEndpoint:
advertiseAddress: 192.168.50.220 #修改为API Server的地址(本机IP地址)
nodeRegistration:
name: k8s-master # 节点名称与hostname保持一致
imageRepository: registry.aliyuncs.com/google_containers # 修改为阿里云镜像仓库
kubernetesVersion: v1.18.20 # 修改为具体的版本
networking:
serviceSubnet: 10.1.0.0/16 #修改Service的网络
podSubnet: 10.2.0.0/16 #新增Pod的网络
# 下载Kubernetes
kubeadm config images pull --config=/etc/kubernetes/kubernetes1.18.20.master.yaml
3 运行kubeadm init 命令安装Master
3.1 删除原安装Kubernetes
# 清空kubeadm init 或者kubeadm join 对主机做的任何更改
kubeadm reset
# 删除配置
sudo rm -rf $HOME/.kube
3.2 安装 Master
# 安装 Kubernetes的Master
kubeadm init --config=/etc/kubernetes/kubernetes1.18.20.master.yaml
# kubectl 验证查看ConfigMap
kubectl get -n kube-system configmap
3.3 安装时警告及处理
# 报错信息显示需要开放 6443 和 10250 这两个端口
[WARNING Firewalld]: firewalld is active, please ensure ports [6443 10250] are open or your cluster may not function correctly
# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld
# 需要关闭缓存
[ERROR Swap]: running with swap on is not supported. Please disable swap
# 关闭缓存
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 8080端口连接被拒绝;原因:kubernetes master没有与本机绑定,将Kubernetes设置添加到本机的环境变量中
The connection to the server localhost:8080 was refused - did you specify the right host or port?
# 添加到全局用户的环境变量中
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
# 生效
source /etc/profile
4 安装Node 加入集群
4.1 安装node并加入
# 按照1 安装kebeadm和相关工具 命令安装 docker、kubelet、kubeadm、kubectl
# 创建Kubernetes的配置目录
mkdir -p /etc/kubernetes/
# 输出kubeadm init默认参数文件的内容并输出到 init.defalut.yaml文件中
kubeadm config print init-defaults > init.default.yaml
# 打开init-config.yaml文件,用来下载Kubernetes
cp init.default.yaml kubernetes1.18.20.nodes.yaml
vim kubernetes1.18.20.nodes.yaml
# 插入以下内容
apiVersion: kubeadm.k8s.io/v1beta2
kind: JoinConfiguration # node 节点
nodeRegistration:
name: k8s-node # 节点名称与hostname保持一致
kubernetesVersion: v1.18.20 # 修改为具体的版本
discovery:
bootstrapToken:
apiServerEndpoint: 192.168.50.220:6443 # Master节点的服务器地址
token: abcdef.0123456789abcdef # Master节点init后在最后一行打印显示
unsafeSkipCAVerification: true
tlsBootstrapToken: abcdef.0123456789abcdef # Master节点init后在最后一行打印显示
# node节点加入
kubeadm join --config=/etc/kubernetes/kubernetes1.18.20.nodes.yaml
4.2 警告及处理
# 缺少admin.conf 文件
Config not found: /etc/kubernetes/admin.conf
The connection to the server localhost:8080 was refused - did you specify the right host or port?
# 将master节点服务器上的/etc/kubernetes/admin.conf 文件上传到 node节点服务器上
scp /etc/kubernetes/admin.conf 用户@ip:/etc/kubernetes/
# 添加到全局用户的环境变量中
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
# 生效
source /etc/profile
# 10250端口已启动
[ERROR Port-10250]: Port 10250 is in use
# 通过netstat命令找到进程号,再通过kill命令杀掉即可
netstat -tpl|grep 10250
kill -9 进程号
# ca.crt配置文件已经存在
[ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists
#重置kubeadm 即可
kubeadm reset
# 报错信息显示:token ID "abcdef" 找不到
error execution phase preflight: couldn't validate the identity of the API Server: could not find a JWS signature in the cluster-info ConfigMap for token ID "abcdef"
# token过期或者 api server不可达
# token过期,在master节点更新token
kubeadm token generate
# 将生成的新token覆盖kubernetes1.18.20.nodes.yaml文件中的token并执行以下命令
kubeadm join --config=/etc/kubernetes/kubernetes1.18.20.nodes.yaml
# api server 不可达,关闭firewalld和selinux
systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
5 验证Kubernetes集群
# 查看所有节点
kubectl get nodes
# 验证Kubernetes集群的相关Pod是否正常
kubectl get pods --all-namespaces
本文来自博客园,作者:cxbks,转载请注明原文链接:https://www.cnblogs.com/cxbks-write-down/articles/16178740.html
浙公网安备 33010602011771号