k8s-kubenetes安装

1.准备工作

因为没有机器,且计算机硬件限制,所以使用vm虚拟机模拟。
硬件方面:
k8s_master 2G 2core 20G
k8s_node1 1G 2core 20G
k8s_node2 1G 2core 20G
操作系统:
CentOS Linux release 7.6.1810 (Core)
网络:
虚拟机需要连接外网
静态ip,桥接模式,虚拟机直接访问外网。
k8s_master 192.168.20.71
k8s_node1 192.168.20.72
k8s_node2 192.168.20.73
用户:
三台虚拟机都使用root登录,操作
密码都是centos
设置好了后,关闭vm,让虚拟机后台运行,然后在本地用ssh连接,ssh工具xshell6。

到此,准备工作完成。

设置虚拟机静态IP:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
名称不一定是ens33
在这里插入图片描述
完成后保存,重启,然后就可以使用ssh连接了。
然后关闭vm软件,在弹出的提示中选择后台运行。
需要关闭的时候再次打开vm软件即可。

2.k8s介绍

k8s是干什么的,什么原理等等,网上多的是。
k8s安装方式有以下几种:
1.从网上下载二进制文件,然后启动(不推荐)
2.使用kubeadm(推荐)
3.从github下载源码,自行编译、启动(不推荐)
4.使用docker从docker仓库拉取(推荐)

基本上安装方式就上述4类,实际上2、4是一类方式。

不过最推荐的就是使用kubeadm进行安装,因为k8s涉及到多个服务共同协作,每个服务的配置比较多,如果手动一个一个的启动就非常的麻烦。

而且kubeadm一开始只是社区自发开发的安装脚本,后续经过考验,官方也开始支持并推荐使用kubeadm进行安装。

kubeadm的安装方式就是从google仓库下载二进制文件,然后生成配置文件,将一些初始化配置写入配置文件,然后启动服务即可。

3.k8s安装

3.1初始化hosts

因为我们是1主2副,所以需要在hosts配置主机名。配置了主机名,在需要IP的地方就可以用主机名代替,后续换IP只需要更新hosts即可,其他的无需修改。

#!/bin/bash
echo -e "192.168.20.71 k8s-master\
\n192.168.20.72 k8s-node1\
\n192.168.20.73 k8s-node2\
\n127.0.0.1 k8s-master" >> /etc/hosts

执行上述脚本后,重启网络服务service network restart
在这里插入图片描述
查看修改结果```cat /etc/hosts
在这里插入图片描述

注意 : 需要修改127对应的主机名
在这里插入图片描述
在这里插入图片描述
测试连通性
ping
这三个虚拟机能够相互ping通
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2更新yum

yum clean all
yum makecache
yum update -y

在这里插入图片描述
发生异常重启重新执行命令

3.3添加kubeadm的yum源

echo -e "[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0" >> /etc/yum.repos.d/kubernetes.repo
yum makecacahe fast
yum update -y

在这里插入图片描述

3.4下载kubeadm

#查看kubeadm的信息
yum list kubeadm --showduplicates|sort -r
yum install -y kubeadm 版本

在这里插入图片描述

我们下载最新的
在这里插入图片描述
yum install -y kubeadm 1.9.9-0
在这里插入图片描述
可以看出,安装kubeadm将会安装kubelet、kubernetes-cni、kubectl等服务

3.5关闭linux的swap

在这里插入图片描述

vi /etc/fstab
swapoff -a && swapon -a

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

3.6关闭防火墙

systemctl disable firewalld
systemctl stop firewalld

在这里插入图片描述

3.8设置开机启动kubelet

systemctl stop kubelet
systemctl enable kubelet
systemctl start kubelet

在这里插入图片描述
这个时候启动失败是正确的,因为还没有使用kubeadm初始化环境。
在这里插入图片描述

3.9添加docker的yum源

yum install yum-utils -y
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum makecacahe fast

在这里插入图片描述
在这里插入图片描述
也可以使用wget手动添加yum源,见3.3
在这里插入图片描述

3.10安装docker

yum list docker-ce --showduplicates|sort -r

在这里插入图片描述
我们安装最新的

yum install -y docker-ce 3:19.03.3-3.el7

在这里插入图片描述

在这里插入图片描述
使用yum安装的时候遇到错误,导致安装失败,一般清除yum缓存,更新yum,重新安装即可解决大多数的问题。(前提不是网络、硬件等问题)

3.11设置开机启动docker

systemctl stop docker
systemctl enable docker
systemctl start docker

在这里插入图片描述

3.12配置docker参数

echo -e "{\n\
\"registry-mirrors\": [\"https://xxxx.mirror.aliyuncs.com\"],\n\
\"exec-opts\": [\"native.cgroupdriver=systemd\"]\n\
}" >> /etc/docker/daemon.json

这里配置docker使用阿里的仓库
然后将docker服务设置为系统服务
然后重启docker服务

systemctl daemon-reload
systemctl restart docker

在这里插入图片描述

3.13设置iptables的规则

modprobe br_netfilter
echo 1 >> /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 >> /proc/sys/net/bridge/bridge-nf-call-ip6tables

在这里插入图片描述

一定记得重启。

3.14使用kubeadm初始化环境

注意:上述13个步骤需要在所有的虚拟机上执行,也就是说不管是master还是node都需要做的操作。

kubeadm init \
--apiserver-advertise-address=192.168.20.71 \
--image-repository=registry.aliyuncs.com/google_containers \
--kubernetes-version v1.16.1 \
--pod-network-cidr=10.244.0.0/16

其中–apiserver-advertise-address表示k8s_master,
–image-repository表示使用阿里的云仓库(因为kubenetes的官方镜像在google服务中,因为GFW的缘故,需要vpn才能从google下载,而且速度很慢)
–kubernetes-version表示我们将要初始化的是v1.16.1的环境,最新的版本可以在github上查看
传送门
–pod-network-cidr表示网关

最新的就是在这里插入图片描述
在这里插入图片描述
然后kubeadm就会从设置的镜像仓库下载镜像了,这里也就能说明为什么使用kubeadm安装k8s和使用docker镜像安装是一回事了,他们都是一样的。
在这里插入图片描述
到此,我们的master就安装好了。

3.15k8s访问设置

在这里插入图片描述
在这张图中,提示中说明了访问k8s集群需要做哪些事情:

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

用大白话说就是哪个用户需要访问集群,就需要将master中的admin.conf文件作为用户的访问配置。
因为kubeadm在初始化环境的时候会初始化证书,然后k8s集群在交换数据时,都是使用restful请求完成的。

所以普通用户需要访问就需要证书。
这和你第一次在12306买火车票时,12306要求你安装证书是一样的。
所以,就需要将这个文件拷贝到用户下,然后赋予权限即可。
我们都是用root用户操作的。
k8s-master

#删除原来的目录
rm -rf /root/.kube
#创建需要的目录
mkdir /root/.kube
#拷贝文件
cp -i /etc/kubernetes/admin.conf /root/.kube/config
#更改文件所有者
chown root:root /root/.kube/config

接下来看下这个文件到底是啥
在这里插入图片描述
一些配置,和三个证书。
一定记下这个token.
在这里插入图片描述
拷贝出来放到其他地方。
接下来安装k8s-node1,k8s-node2加入k8s-master集群,使用上图红框中的命令即可

kubeadm join 192.168.20.71:6443 --token ihj7xn.256lev80oztuz346 \
    --discovery-token-ca-cert-hash sha256:69a495502f215f3352c863e5ef52fa7229d24c3a74481a0661aa4ad65f3a2de3

在这里插入图片描述
到了这里一套k8s的环境就搭建完了。

4.k8s常用命令

4.1查看集群组成

kubectl get nodes

在这里插入图片描述

4.2查看集群状态

kubectl get cs

在这里插入图片描述
显示这个网上找了一些资料,大概就是说这个不影响正常使用。是因为集群条件下启动,那么controller-manager服务、scheduler服务、etcd服务可能不在一个主机上,所以这里都是unknown,不过这些服务都是正常运行的。

不管k8s怎么操作,k8s都是基于docker 运行的,所以查看docker的容器使用情况也可以看出k8s服务是否正常运行

docker ps -a

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到这些服务都是正常启动的。

还可以通过pod进行查看

kubectl get pod --all-namespaces -o wide

在这里插入图片描述
因为还未安装网络相关的服务,所以coredns服务是不运行的。
在这里插入图片描述
在node上查询的结果相同。

4.3安装网络服务(master)

cd /etc/kubernetes/
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f  kube-flannel.yml

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

4.4查看k8s所有命名空间

kubectl get namespaces --all-namespaces

在这里插入图片描述

4.5查看命名空间中pod

kubectl get pod --namespace kube-system

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

4.6查看k8s的deployment

kubectl get deployment --all-namespaces

在这里插入图片描述

4.7重新生成token

因为默认的token是24小时有效期,过期了就无法在使用token加入集群了,所以当token过期后,需要重新生成token,或者设置tocken永不过期(自己玩玩就行,生产环境千万不能用)

kubeadm join 192.168.20.71:6443 --token rnnstv.3s9sc9memaiaeakp \
    --discovery-token-ca-cert-hash sha256:45c8acbd18490a5ab9a7db672c09692fc81e2bd718a9ce95f35b6e0f7cb3f6cc

这个命令大致包含三个关键参数
1.master的ip
2.token
3.token-hash

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

在这里插入图片描述

5.kubeadm安装过程中发生异常

如果在kubeadm初始化之后发生错误,可以使用

kubeadm reset

进行重置kubeadm环境,然后重新使用kubeadm init进行初始化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值