一、关闭Selinux,打开文件/etc/sysconfig/selinux,找到SELINUX=xxxxxx,如下图红框所示,将其改为SELINUX=disabled

二、设置:iptables

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

三、关闭swap

执行如下命令关闭当前swap

swapoff -a

然后再打开文件/etc/fstab,用#注释掉swap有关的一行。

四、开放端口(或者直接关闭防火墙)

Master node 开放端口

firewall-cmd --add-masquerade --permanent
firewall-cmd --zone=public --add-port=6443/tcp --permanent
firewall-cmd --zone=public --add-port=2379-2380/tcp --permanent
firewall-cmd --zone=public --add-port=10250-10252/tcp --permanent
firewall-cmd --zone=public --add-port=8285/udp --permanent
firewall-cmd --zone=public --add-port=8472/udp --permanent
firewall-cmd --reload

Worker node开放端口

firewall-cmd --add-masquerade --permanent
firewall-cmd --zone=public --add-port=10250/tcp --permanent
firewall-cmd --zone=public --add-port=30000-32767/tcp --permanent
firewall-cmd --zone=public --add-port=8285/udp --permanent
firewall-cmd --zone=public --add-port=8472/udp --permanent
firewall-cmd --reload

最后可以查看下端口开放状态

firewall-cmd --zone=public --list-ports

五、安装Docker(这里要删除旧版本Docker)

yum remove docker*

yum install yum-utils device-mapper-persistent-data lvm2

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

yum install docker-ce-18.06.2.ce

systemctl enable docker && systemctl start docker

如果是旧的Docker使用过再升级,docker-ce有可能会启动不了,需要删除旧的Docker文件,再重新启动就好了。

rm /etc/docker/key.json

rm -rf /var/lib/docker/

六、安装Kubernets

首先安装ipvs支持

yum install ipset ipvsadm conntrack-tools.x86_64 -y

modprobe ip_vs_rr
modprobe ip_vs_wrr
modprobe ip_vs_sh
modprobe ip_vs

lsmod | grep ip_vs


cat <<EOF >  /etc/sysconfig/modules/ipvs.modules
#!/bin/sh
modprobe ip_vs_rr
modprobe ip_vs_wrr
modprobe ip_vs_sh
modprobe ip_vs
EOF

添加仓库 /etc/yum.repos.d/kubernetes.repo

[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

安装

yum install -y kubelet kubeadm kubectl  && systemctl enable kubelet  && systemctl start kubelet

七、初始化Master及安装Pod Network(只在master节点执行)

kubeadm init \
  --kubernetes-version=v1.15.2 \
  --pod-network-cidr=10.244.0.0/16

kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

  初始化完成后需要执行如下命令配置环境

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

 并且记录下join命令用于添加node

kubeadm join 192.168.1.61:6443 --token sbhvha.2k21emm2n2i4yhmj \
    --discovery-token-ca-cert-hash sha256:d8a8217eeb0bc465ef755174f5a6e16b41e426bd2ba95be921d847788af06567

如果忘记Token和Hash,可以使用以下命令重新获取

kubeadm token list

kubeadm token create

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

常用命令和操作

1、删除Node

Master节点

kubectl drain k8s-node-a --delete-local-data --force --ignore-daemonsets
kubectl delete node k8s-node-a

Node节点

kubeadm reset

查看相关日志

journalctl -f -u kubelet

kubectl --namespace kube-system logs kube-flannel-ds-amd64-r69nb

注意事项和“坑”

1、由于要使用Google的仓库,所以上述安装需要科学上网条件(或使用国内节点),所有节点机器都如上安装Docker、kubelet、 kuberadm和kubectl 。

2、我所使用的系统是yum -y upgrade后的最新系统(CentOS Linux release 7.5.1804 (Core)),说明新系统是支持的。

3、使用的Docker-CE完成了kubeadm init,默认Docker 1.13.1不能完成初始化,不知道是否兼容问题或者说是1.13使用systemd作CgroupDriver(确认两边同时用systemd也不行),未验证。init过程中journalctl -fu kubelet输出各种错误是正常的,init成功后错误输出就没了,这个问题开始不知道,init不成功总想从输出中找出问题所在,看了很多资料都没解决,白白耽误了2天,最后根据K8s官网的CRI安装指南安装了Docker-CE,就没问题了。

4、还有一个比较奇怪的问题,切换到Docker-CE后,reset、init了两次才成功,其中未作任何修改。

5、Kubernetes官网安装文档需要创建以下配置文件,但是创建后无法启动Docker,可能这个配置不适合我的系统,不能用systemd。

/etc/docker/daemon.json

参考:

Installing kubeadm | Kubernetes

CentOS7环境部署kubenetes1.12版本五部曲之一:标准化机器_程序员欣宸的博客-CSDN博客

以上为实际操作记录,用于备忘和与大家共享,有问题请留言讨论。

最后更新日期:2019-10-11

Logo

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

更多推荐