Kubernetes集群之主节点安装记录

1、设置主机名

vim /etc/hosts

172.20.10.4 master
172.20.10.5 slaveA
172.20.10.6 slaveB

本次安装过程中忘了修改主节点hostname,默认hostname是:localhost.localdomain,但只要保证集群中所有节点的hostname唯一即可!

修改hostname命令如下:

hostnamectl set-hostname master

2、关闭swap

k8s若内存使用不足会采用硬盘代替,硬盘的效率绝对没有内存效率高,为了不影响k8s效率需要关闭swap

swapoff -a

# 替换,即在前面添加注释符号:#
sed -i '/swap / s/^\(.*\)$/#\1/g' /etc/fstab

sed命令执行前:

 sed命令执行后:

3、关闭SELinux

setenforce 0
# 将字符enforcing替换为permissive
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

4、安装iptables

docker升级等涉及网络转发依赖iptables

yum install -y iptables-services

systemctl start iptables
systemctl enable iptables

# 清空iptables规则
iptables -F

 5、开启Netfilter

docker及内核转发等网络转发需要Netfilter

modprobe br_netfilter

 设置ipvs支持

modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf-conntrack_ipv4

也许会遇到问题:modprobe: FATAL: Module nf-conntrack_ipv4 not found

解决:https://blog.csdn.net/AP1005834/article/details/54907700

6、K8S配置文件

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
# 开启网桥模式
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system

7、安装容器运行时

为了在Pods中运行容器,Kubernetes使用容器运行时(Container Runtime)。默认情况下,Kubernetes使用容器运行时接口(CRI)与你选择的容器运行时进行对接。

如果未指定容器运行时,kubeadm会通过扫描已知的Unix域套接字自动尝试检测已安装的容器运行时。

容器运行时包括:

  • Docker
  • containerd

  • CRI-O

如果同时检测到Docker和containerd,则Docker优先。如果检测到其他两个或更多运行时,则kubeadm退出并显示错误。

# 添加阿里云yum源
$ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装docker
$ yum install -y docker-ce
# 如果是升级docker
$ yum update -y docker-ce

# 启动docker服务并允许开启自启
$ systemctl start docker && systemctl enable docker

8、安装配置K8S

导入阿里云yum源

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安装Kubernetes

# 安装
yum install -y kubeadm kubectl kubelet

# 启动服务
systemctl enable kubelet && systemctl start kubelet

9、生成配置文件

# 生成配置文件到指定的目录
kubeadm config print init-defaults > init-config.yaml

# 列出kubernetes需要pull的镜像
kubeadm config images list --config init-config.yaml

# 可以根据配置文件统一拉取镜像:前提是能科学上网,否则还是手动下载镜像
kubeadm config images pull --config init-config.yaml

罗列出需要手动下载的镜像

[root@localhost ~]# cd k8s
[root@localhost k8s]# ls
[root@localhost k8s]# kubeadm config print init-defaults > init-config.yaml
[root@localhost k8s]# ls
init-config.yaml
[root@localhost k8s]# kubeadm config images list --config init-config.yaml
k8s.gcr.io/kube-apiserver:v1.20.0
k8s.gcr.io/kube-controller-manager:v1.20.0
k8s.gcr.io/kube-scheduler:v1.20.0
k8s.gcr.io/kube-proxy:v1.20.0
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.13-0
k8s.gcr.io/coredns:1.7.0
[root@localhost k8s]#

 罗列出需要手动下载的镜像

无法访问k8s.gcr.io,改用手动下载,如下: 

# 因无法科学上网,需要手动从https://hub.docker.com/下载所需镜像后修改tag并删除原始镜像

docker pull kubeimage/kube-apiserver-amd64:v1.20.0
docker tag kubeimage/kube-apiserver-amd64:v1.20.0 k8s.gcr.io/kube-apiserver:v1.20.0
docker image rm kubeimage/kube-apiserver-amd64:v1.20.0

docker pull kubeimage/kube-controller-manager-amd64:v1.20.0
docker tag kubeimage/kube-controller-manager-amd64:v1.20.0 k8s.gcr.io/kube-controller-manager:v1.20.0
docker image rm kubeimage/kube-controller-manager-amd64:v1.20.0

docker pull kubeimage/kube-scheduler-amd64:v1.20.0
docker tag kubeimage/kube-scheduler-amd64:v1.20.0 k8s.gcr.io/kube-scheduler:v1.20.0
docker image rm kubeimage/kube-scheduler-amd64:v1.20.0
 

docker pull kubeimage/kube-proxy-amd64:v1.20.0
docker tag kubeimage/kube-proxy-amd64:v1.20.0 k8s.gcr.io/kube-proxy:v1.20.0
docker image rm kubeimage/kube-proxy-amd64:v1.20.0

docker pull kubesphere/pause:3.2
docker tag kubesphere/pause:3.2 k8s.gcr.io/pause:3.2
docker image rm kubesphere/pause:3.2

docker pull bantianyinshi/etcd:3.4.13-0
docker tag bantianyinshi/etcd:3.4.13-0  k8s.gcr.io/etcd:3.4.13-0
docker image rm bantianyinshi/etcd:3.4.13-0

docker pull bantianyinshi/coredns:1.7.0
docker tag bantianyinshi/coredns:1.7.0 k8s.gcr.io/coredns:1.7.0
docker image rm bantianyinshi/coredns:1.7.0

10、调整配置

vim init-config.yaml

11、执行安装K8s命令:即初始化主节点

kubeadm init --config=init-config.yaml | tee kubeadm-init.log

 

看到上述信息说明K8s之master主机安装成功!记录下token备用,后续集群配置使用

kubeadm join 172.20.10.4:6443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:d909d66a077b19f686975da2691a7a82713ec975c09b6c6e740280a6125ca5b7

参考:kubeadm init初始化k8s集群时报错,[kubelet-check] Initial timeout of 40s passed.

12、master主机安装成功,根据其最后显示内容执行如下命令:

# 创建kube工作目录。保存交互缓存和配置信息
mkdir -p $HOME/.kube
# 拷贝admin配置文件到工作目录
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# 对目录进行所属变更
sudo chown $(id -u):$(id -g) $HOME/.kube/config

13、验证

可以看到节点状态是:NotReady,需要安装flannel网络组件处理

14、安装flannel网络组件

# 获取kube-flannel yml配置脚本
wget https://github.com/coreos/flannel/raw/master/Documentation/kube-flannel.yml

vim kube-flannel.yml

如上图,因无法科学上网,无法正常pull镜像,改用手动下载(https://github.com/coreos/flannel/releases)再load到本地docker仓库里中,如下截图:

 https://github.com/coreos/flannel/releases/tag/v0.13.1-rc2

 上图主要命令如下:

# 载入docker本地仓库
docker load < flanneld-v0.13.1-rc2-amd64.docker
# 更改tag,与文件kube-flannel.yml保持一致
docker tag quay.io/coreos/flannel:v0.13.1-rc2-amd64 quay.io/coreos/flannel:v0.13.1-rc2
# 删除原始镜像
docker image rm quay.io/coreos/flannel:v0.13.1-rc2-amd64

准备工作完成,现正式安装flannel组件命令

kubectl create -f kube-flannel.yml

至此,Kubernetes集群之主节点安装完美落幕!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值