k8s 的安装和调试

一、实验环境

管理节点 master:

  • CentOS Linux release 7.7.1908 (Core)
  • ip 地址:192.168.59.139

被管理节点 node01

  • CentOS Linux release 7.7.1908 (Core)
  • ip 地址:192.168.59.140

被管理节点 node02

  • CentOS Linux release 7.7.1908 (Core)
  • ip 地址:192.168.59.141

被管理节点 node03

  • CentOS Linux release 7.7.1908 (Core)
  • ip 地址:192.168.59.142

同时满足:

  • 四个主机之间可以互相以主机名进行通信
  • 所有主机关闭防火墙和 selinux
  • 可以与互联网进行连接
  • 借助于NTP服务器设定各节点时间精确同步
  • 各节点禁用所有的swap设备

禁用swap设备的办法:

# 永久关闭swap
vim /etc/fstab
# 注释掉swap

二、所有节点安装

安装 docker 的 yum 仓库

cd /etc/yum.repos.d/
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
mv docker-ce.repo docker.repo

手动添加 kubernetes 的 yum 仓库配置文件
/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
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

安装 docker 和 kubernetes

yum -y install docker-ce
yum install -y kubelet kubeadm kubectl

docker 自1.13版起会自动设置 iptables 的 FORWARD 默认策略为 drop,这可能影响 Kubernetes 集群依赖的报文转发功能,因此需要在 docker 服务启动后,重新将FORWARD 链的默认策略设置为ACCEPT,修改/usr/lib/systemd/system/docker.service,在”ExecStart=/usr/bin/dockerd“ 一行后添加”ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT“

启动 docker

systemctl daemon-reload
systemctl start docker
systemctl enable docker

检查是否启动成功

# 查看docker信息
docker info

# 查看FORWARD ACCEPT
iptables -vnL

这里可能会有的问题:
sysctl -a | grep bridge 命令显示的结果应该有以下两行

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

如果这两项不为1 ,需要手动添加

vi /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-arptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

之后使用 sysctl -p /etc/sysctl.d/k8s.conf 命令重置一下,再进行查看就变成 1 了。

使 swap 启用时不报错:vi /etc/sysconfig/kubelet

KUBELET_EXTRA_ARGS="--fail-swap-on=false"

三、master 节点的配置

rpm -q kubeadm
rpm -q kubectl

这两个命令查询出来的软件版本号要一致

初始化 kube

kubeadm init --kubernetes-version="1.20.0" --pod-network-cidr="10.244.0.0/16" --image-repository="registry.aliyuncs.com/google_containers" --dry-run --ignore-preflight-errors=Swap

kubeadm init --kubernetes-version="1.20.0" --pod-network-cidr="10.244.0.0/16" --image-repository="registry.aliyuncs.com/google_containers" --ignore-preflight-errors=Swap

注意:1.20.0 那里的版本号要与你上面 rpm 命令查询出来的版本号一致

第一行那里的 --dry-run 是干跑,先进行一次模拟初始化;第二行才是实际上进行的初始化

这一步可能会很慢,因为初始化过程它会下载镜像。如果你的机器可以连接外网的话,命令中的 repository 后面的镜像仓库地址你可以写官方的地址。这里因为本人的机器无法连到外网,所以使用了国内的镜像仓库。

初始化成功后你会看到这样一大段话,记得一定要把这段话保存下来,后面添加 node 节点要用到

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.59.139:6443 --token x6rxqp.62alq5c0yt5e9y1z \
    --discovery-token-ca-cert-hash sha256:ebffb96a2193d61d8dc420b4a0a8e71f77a051ce0a7ec0e4735b758fea36c32e 

接着就是按照上面说的提示进行配置:
首先转到一个普通账户
然后执行以下命令
实验中你使用 root 身份也无妨

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

接着去 github 下载一个 yaml 文件,地址是:https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

接着应用这个 yaml 文件:kubectl apply -f kube-flannel.yml

启动 kubelet 服务:systemctl start kubelet

查看 pod 信息 和 节点信息:

kubectl get pods -n kube-system
kubectl get nodes

如果看到显示有 pending 字样的 pod 或 节点,请等待一会,过会就会准备好。

在这里插入图片描述

四、node 节点配置

启动kubelet:systemctl start kubelet

然后复制粘贴 master 节点初始化成功后的提示信息的最后那一段代码, 一定是之前让你保存的 master 节点的初始化成功回显的最后那一大段信息,在最后那一段,不要复制本篇文章的!不要复制本篇文章的!不要复制本篇文章的! 如果没禁用swap ,记得在后面加上 --ignore-preflight-errors=Swap

kubeadm join 192.168.59.139:6443 --token x6rxqp.62alq5c0yt5e9y1z     --discovery-token-ca-cert-hash sha256:ebffb96a2193d61d8dc420b4a0a8e71f77a051ce0a7ec0e4735b758fea36c32e --ignore-preflight-errors=Swap

此时在 master 节点所在的主机查看所有节点:
在这里插入图片描述
这样一个 node 节点就添加到了 master 节点的管理下,剩下的 node 节点的添加操作一样。

在这里插入图片描述
如果想在被管理节点查看所有节点:

在被管理节点查看节点列表mkdir -p $HOME/.kube
然后将管理节点的 /etc/kubernetes/admin.conf 复制到其他节点$HOME/.kube/config
之后就可以使用 kubectl get nodes 查看节点情况了

至此,kubenetes 安装和节点的添加完毕。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值