centos安装k8s

本次安装一个master节点和两个node节点

k8s安装最低要求配置
master节点:2核2G
node1节点:2核4G
node2节点:2核4G

对内rpc通讯(gRPC) 对外restfulApi

1. 安装Docker【master 和node节点都安装】

Kubernetes默认CRI(容器运行时)为Docker,因此需要先安装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

配置阿里云镜像地址 打开这个文件/etc/docker/daemon.json添加如下代码

{
"registry-mirrors": ["https://fewddcrg.mirror.aliyuncs.com"]
}

添加后重加载,重启

sudo systemctl daemon-reload
sudo systemctl restart docker
2 修改hostname

我们在安装之前给每个节点都修改hostname,这个名字会作为k8s的节点名。

  • 修改命令
hostname node1
  • 查看命令
hostname

如果这时候不修改后期修改nodename很麻烦,还可能导致coreDNS一直处于创建中的错误,如果遇到这种情况参考

修改镜像地址

3. 所有机器安装 kubernetes

使用阿里云镜像站的源,提供的安装方法,阿里云的镜像站网址:https://developer.aliyun.com/mirror/kubernetes
这里我们去掉启动命令systemctl start kubelet,只设置开机启动,改变后的代码是:

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
setenforce 0
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet
4. 先初始化master节点的 kubeadm

复制一个初始化的yml

kubeadm config print init-defaults --kubeconfig all> kubeadm.yml

修改一下kubeadm.yml文件
第一个地方:advertiseAddress 配置master节点的内网ip
第二个地方:networking下添加pod网络网段

podSubnet: "10.224.0.0/16"

到此修改完成。

下面通过命令查看一下,包含了哪些镜像

kubeadm config images list --config kubeadm.yml

安装命令

kubeadm init --config kubeadm.yml --upload-certs | tee kubeadm-init.log

–upload-certs :将控制平面证书上载到kubeadm-certs Secret。
tee kubeadm-init.log : 记录日志到当前目录下的kubeadm-init.log文件中

在这里插入图片描述
执行命令成功之后给出了两个重要信息

  • 第一个让我们执行如下命令拷贝文件
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 第二个
    node节点加入到master节点网络的命令,我们要记住这个信息我做了替换,各位要根据自己机器返回的信息复制
kubeadm join 172.17.32.XX:6443 --token g5kkqm.za70x0cdl5w8pnv3 \
    --discovery-token-ca-cert-hash sha256:a0c98a328eda69a0b01e08503c7c73febdxxxxxxxd9d944528fa809aea7fb853
5. 通过命令查看是否初始化成功
kubectl get node

这时候你会发现初始化是失败的,因我pod网络环境不通。

6. 【非必须】遇到问题,重置kubeadm

端口占用,忘记token,之前的设置错误等情况下,我们可能需要重置kubeadm,重置意味着“ kubeadm init”或“ kubeadm join”对此主机所做的更改将被还原

使用命令如下命令进行重置:

# 重置kubeadm
kubeadm reset
# 删除之前复制的文件
rm -rf $HOME/.kube
  • 重置之后
  1. 如果是master节点按照步骤 3 重新初始化 kubeadm
  2. 如果是node节点,按照步骤7 重新添加节点
7. 添加node节点
  1. 在node节点执行,master节点初始化成功后的命令2,如果你没记住第二条命令,可以通过下面的方式重新生成token
kubeadm token create --print-join-command
  1. 执行成功之后记得把master节点$HOME/.kube```目录的config文件添加到node节点`$HOME/.kube中,这样node节点才能使用kubectl命令

可以通过命令在node节点下载

# 创建目录
mkdir $HOME/.kube
# nodeip 填写node节点的ip地址
scp root@masterip:/root/.kube/config /root/.kube/config

在node节点下执行如下命令,添加可执行权限

sudo chown $(id -u):$(id -g) $HOME/.kube/config

如果你添加node节点失败了,按照第6步重置node节点

8. 安装Pod网络CNI插件

没有安装网络插件的节点是NotReady状态,安装好网络插件之后节点才能变成Ready状态,网络插件的作用是让所有节点都接入到虚拟的局域网络中

CNI插件有四种可选Flannel,Calico,Canal,Weave,选择一种就可以

  • 使用Flanner

    需要两个文件kube-fannel-rbac.ymlkube-flannel.yml,这两个文件可用的下载地址太难找,我放到github上一份

    github地址
    下载后执行如下命令安装:

    kubectl apply -f kube-fannel-rbac.yml
    kubectl apply -f kube-flannel.yml
    
  • 使用Calico
    官网文档

    # 安装calico
    kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    

安装后我们看一下node节点状态

kubectl get node

在这里插入图片描述

kubectl get pods -n kube-system

在这里插入图片描述


9. 测试

在Kubernetes集群中创建一个pod,验证是否正常运行,我们可以在master节点中执行命令,master节点会帮我们把所操作的任务调度到node节点执行。

# 创建 部署任务nginx 名字nginx ,80端口,1个node运行
kubectl run nginx --image=nginx --port=80 --replicas=1
# 创建service 让应用能被外部访问
kubectl expose deployment nginx --port=80 --type=NodePort
# 查看启动情况
kubectl get pod,svc
# 查看启动情况--详细(能看出部署在了哪个节点上)
kubectl get pod,svc	 -o wide

在这里插入图片描述
能看出部署在了node1节点上,映射的端口是32725
我们可以访问一下看看是否能请求成功
http://node1ip:32725
http://node2ip:32725

# ----------------------------------------
# 查看所有的pod
kubectl get pods --all-namespaces
kubectl get pods,svc --all-namespaces
kubectl get pods,svc -o wide --all-namespaces
# 查看所有service
kubectl get service --all-namespaces
# 通过 -n指定namespaces
kubectl get service  -n kube-system
# 查看(部署任务)的情况是否成功等
kubectl get deployment --all-namespaces
# 查看所有pod部署在哪里
kubectl get pod --all-namespaces -o wide

访问一下:

卸载docker(非必须)
# 查询安装列表
yum list installed | grep docker
# 卸载
yum remove docker-ce.x86_64 -y
# 删除镜像/容器等
rm -rf /var/lib/docker

常用命令

https://www.cnblogs.com/klvchen/archive/2018/09/04/9585746.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值