Kubernetes——Kubernetes的安装

一、k8s的安装

1.1、k8s的4种安装部署方式

  • 使用kubeadmin通过离线镜像安装(推荐)

  • 使用阿里公有云平台k8s(钞能力)

  • 通过yum官方仓库安装上古版本(太古老,不太推荐)

  • 二进制包的形式进行安装,kubeasz 【github】(不够安全)

离线安装包下载地址

链接: https://pan.baidu.com/s/19k01JgowPatiBPauoZi–g 密码: f88j

1.2、安装前准备(使用kubeadmin通过离线镜像安装)

1.2.1、准备集群服务器
节点IP节点角色
192.168.8.64Master
192.168.8.65Node1
192.168.8.66Node2

注意:搭建的机器CPU需要2核以上,否则无法安装k8s,内存最好2GB以上,这个暂时没测试出有硬性要求

1.2.1 配置服务器免密操作
1.2.1.1 Master服务器
1.2.1.1.1 生成公钥与私钥对

这一步没有什么特殊设置的话,一路默认回车下一步即可

ssh-keygen -t rsa
在这里插入图片描述 ###### 1.2.1.1.2 复制公钥 > 将本机的公钥复制到远程机器的authorized_keys文件中,此步骤,有几台服务器,就操作几次,最好本机也操作一次

调用格式如下

ssh-copy-id 【远程账户名称】@【远程ip】

ssh-copy-id root@192.168.8.64
ssh-copy-id root@192.168.8.65
ssh-copy-id root@192.168.8.66
1.2.1.2 其他服务器的操作

都按照第一台服务器进行操作

1.2.1.3 测试

测试一下是否是不需要密码就可以登陆了
调用格式如下
ssh 【远程账户名称】@【远程ip】

ssh root@192.168.8.64
exit
ssh root@192.168.8.65
exit
ssh root@192.168.8.66
exit
1.2.2、设置主机名与时区(Master、Node)

Master、Node1、Node2节点都需要执行

timedatectl set-timezone Asia/Shanghai

Master节点执行

hostnamectl set-hostname master

Node1执行

hostnamectl set-hostname k8s-node1

Node2执行

hostnamectl set-hostname k8s-node2
1.2.3、添加hosts网络主机配置(Master、Node1、Node2)
echo "192.168.8.64 master" > /etc/hosts
echo "192.168.8.65 node1" > /etc/hosts
echo "192.168.8.66 node2" > /etc/hosts
1.2.4、关闭防火墙,生产环境跳过这一步(Master、Node1、Node2)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl disable firewalld
systemctl stop firewalld
1.2.5 将镜像包上传至每个节点(Master、Node1、Node2)
mkdir -p /usr/local/k8s-install
cd /usr/local/k8s-install
4.2.6 安装Docker(Master、Node1、Node2)
tar -zxvf docker-ce-18.09.tar.gz
cd docker 
yum localinstall -y *.rpm
systemctl start docker
systemctl enable docker
1.2.7 确保从cgroups均在同一个从groupfs(Master、Node1、Node2)

​ cgroups是control groups的简称,它为Linux内核提供了一种任务聚集和划分的机制,通过一组参数集合将一些任务组织成一个或多个子系统。
​ cgroups是实现IaaS虚拟化(kvm、lxc等),PaaS容器沙箱(Docker等)的资源管理控制部分的底层基础。
​ 子系统是根据cgroup对任务的划分功能将任务按照一种指定的属性划分成的一个组,主要用来实现资源的控制。
​ 在cgroup中,划分成的任务组以层次结构的形式组织,多个子系统形成一个数据结构中类似多根树的结构。cgroup包含了多个孤立的子系统,每一个子系统代表单一的资源

执行以下指令

docker info | grep cgroup 

[root@k8s-master ~]# docker info | grep cgroup
Cgroup Driver: cgroupfs

如果不是cgroupfs,执行下列语句

cat << EOF > /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=cgroupfs"]
}
EOF
systemctl daemon-reload && systemctl restart docker
1.2.8 安装kubeadm

kubeadm是集群部署工具

cd /usr/local/k8s-install/kubernetes-1.14
tar -zxvf kube114-rpm.tar.gz
cd kube114-rpm
yum localinstall -y *.rpm
1.2.9 关闭交换区
swapoff -a
vi /etc/fstab 
78BFFEB0-FBBE-4702-ACBE-373E3CF4CEDA
1.2.10 配置网桥
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
1.2.10 通过镜像安装k8s(Master,Node1,Node2)
cd /usr/local/k8s-install/kubernetes-1.14
docker load -i k8s-114-images.tar.gz
docker load -i flannel-dashboard.tar.gz

查看docker下的k8s镜像

[root@k8s-master ~]# docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
k8s.gcr.io/kube-proxy                   v1.14.1             20a2d7035165        2 years ago         82.1MB
k8s.gcr.io/kube-apiserver               v1.14.1             cfaa4ad74c37        2 years ago         210MB
k8s.gcr.io/kube-controller-manager      v1.14.1             efb3887b411d        2 years ago         158MB
k8s.gcr.io/kube-scheduler               v1.14.1             8931473d5bdb        2 years ago         81.6MB
quay.io/coreos/flannel                  v0.11.0-amd64       ff281650a721        2 years ago         52.6MB
k8s.gcr.io/coredns                      1.3.1               eb516548c180        2 years ago         40.3MB
k8s.gcr.io/kubernetes-dashboard-amd64   v1.10.1             f9aed6605b81        2 years ago         122MB
k8s.gcr.io/etcd                         3.3.10              2c4adeb21b4f        2 years ago         258MB
k8s.gcr.io/pause                        3.1                 da86e6ba6ca1        3 years ago         742kB
1.2.11 主服务器配置(Master)
kubeadm init --kubernetes-version=v1.14.1 --pod-network-cidr=10.244.0.0/16

执行完以后,会有如下提示,执行他:

2F4522FD-D6A7-4B22-8570-FE1B1E29C99D
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

admin.conf是集群的核心文件,包含了当前集群的安全授权数据以及集群自身的信息

1.2.12 复制加入集群指令(Master)

在[1.2.11 主服务器配置(Master)](#1.2.11 主服务器配置(Master))中的输出结尾有这么一段话

image-20211118121611353

复制->粘贴至txt文档中,一会再使用

1.2.13 解决状态异常问题(Master)
kubectl get nodes
#查看所有的Nodes状态
image-20211118122821718
kubectl get pod --all-namespaces
# 获得所有的pod的命名空间,包括k8s自己的一些pod
image-20211118123041345

CrashLoopBackOff状态表示创建失败,正在重试,5表示已经重试了5次(一般这个组件,过一会都能启动成功)

Pending状态,表示阻塞

如果反复出现CrashLoopBackOff代表硬件不够,增加CPU与内存资源即可

kubectl create -f kube-flannel.yml
# 安装flannel网络组件,是一个通信协议,用于pod与pod之间进行通信,kube-flannel.yml在kubernets-1.14中有
image-20211118142539792

此时就变成Running状态了

1.2.14 子节点加入主节点(Node1,Node2)

复制[4.2.12 复制加入集群指令(Master)](#4.2.12 复制加入集群指令(Master))的指令至Node1和Node2即可成功加入主节点

1.2.15 查看集群状态(Master)
kubectl get nodes

image-20211118143418035

全是Ready即说明集群搭建成功了

1.2.15 如果忘记了加入指令怎么办(Master)

查看所有令牌

kubeadm token list

[root@k8s-master ~]# kubeadm token list
TOKEN     TTL       EXPIRES   USAGES    DESCRIPTION   EXTRA GROUPS

如果当前令牌查询出来为空,则说明token过期了,可以使用如下命令新建一个token

#如果过期可先执行此命令
kubeadm token create    #重新生成token
#列出token
kubeadm token list  | awk -F" " '{print $1}' |tail -n 1

# 执行结果如下
[root@k8s-master ~]# kubeadm token create
zj8q6t.3wlw9d3xnnflqjrv
[root@k8s-master ~]# kubeadm token list
TOKEN                     TTL       EXPIRES                     USAGES                   DESCRIPTION   EXTRA GROUPS
zj8q6t.3wlw9d3xnnflqjrv   23h       2021-11-19T15:01:59+08:00   authentication,signing   <none>        system:bootstrappers:kubeadm:default-node-token
[root@k8s-master ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  perl5
[root@k8s-master ~]# kubeadm token list  | awk -F" " '{print $1}' |tail -n 1
zj8q6t.3wlw9d3xnnflqjrv

查出后去子节点执行

kubeadm join 192.168.8.64:6443 --token zj8q6t.3wlw9d3xnnflqjrv --discovery-token-unsafe-skip-ca-verification

–discovery-token-unsafe-skip-ca-verification表示对token不做安全性校验

1.2.15 开启Web UI Dashboard
cd /usr/local/k8s-install/kubernetes-1.14
kubectl apply -f kubernetes-dashboard.yaml
kubectl apply -f admin-role.yaml
kubectl apply -f kubernetes-dashboard-admin.rbac.yaml
kubectl -n kube-system get svc

此时外部可通过http://192.168.8.64:32000 访问

Kubernetes其他文档列表

Logo

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

更多推荐