Suggestion
如果是Kubernetes的初学者,我建议从官网的教程开始看起:教程。
官网其他的东西先不要看,就像天龙八部里灵鹫宫的图画,虚竹看了受益匪浅,梅兰竹菊却会受内伤。
Install flannel
不论是Master还是Worker,都要安装CNI网络插件CNI。
[CNI] CNI网络用于让Kubernetes给容器分配集群内部的IP地址。
Flannel就是一种CNI网络插件。
- 安装
yum install flannel -y
- 启动
systemctl daemon-reload
systemctl enable flanneld
systemctl start flanneld
systemctl status flanneld
- 安装插件
mkdir /opt/cni/bin
tar zxvf cni-plugins-linux-amd64-v0.8.6.tgz -C /opt/cni/bin
下载地址:
Install kubernetes
配置环境
-
关闭selinux
Linux安全相关。
# 查看 getenforce # 临时关闭 setenforce 0修改配置(重启不生效)
# 永久关闭 vi /etc/sysconfig/selinux SELINUX=disabled
-
关闭swap
# 临时 swapoff -a # 永久 sed -i.bak '/swap/s/^/#/' /etc/fstab
-
允许ip_forward
# 0 表示禁止 echo "1" > /proc/sys/net/ipv4/ip_forward
配置源
-
配置centos7、docker源
在这个过程中,我发现我的CentOS7系统默认的wget有些问题,需要重新安装:
yum remove wget yum install wget这里需要注意备份:
cd /etc/yum.repos.d/ # backup mv CentOS-Base.repo CentOS-Base.repo.bak # 下载centos7源和docker源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum clean all && yum makecache fast
-
配置k8s源
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=0 EOF
安装Docker
-
安装Docker
yum install docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io -y -
配置docker的
--cgroup-driver=systemdmkdir /etc/docker tee /etc/docker/daemon.json <<EOF { "registry-mirrors":["https://v16stybc.mirror.aliyuncs.com"] , "exec-opts":["native.cgroupdriver=systemd"] } EOF cat /etc/docker/daemon.json #vi /etc/docker/daemon.json # #{ # "registry-mirrors":["https://v16stybc.mirror.aliyuncs.com"] # , "exec-opts":["native.cgroupdriver=systemd"] #} ## 执行完这一步之后需要重启docker与kubenet令配置生效 systemctl daemon-reload systemctl restart docker[cgroup driver] control group driver是Linux系统内核提供的特性,主要用于限制和隔离一组进程对系统资源的使用。
-
启动docker并配置开机启动
systemctl enable docker && systemctl start docker
安装k8s
-
安装k8s
yum install -y kubelet-1.16.4 kubeadm-1.16.4 kubectl-1.16.4 # 卸载 # yum remove -y kubelet-1.16.4 kubeadm-1.16.4 kubectl-1.16.4
-
设置开机启动
systemctl enable kubelet && systemctl start kubelet
-
配置kubectl上下文到环境中
echo "source <(kubectl completion bash)" >> ~/.bash_profile cd ~ source .bash_profile
-
内核参数修改
k8s网络一般使用flannel,该网络需要设置内核参数bridge-nf-call-iptables=1
vi /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1执行sysctl -p /etc/sysctl.d/k8s.conf使之生效
sysctl -p /etc/sysctl.d/k8s.conf
Master Node
Init
-
设置节点名称:
hostnamectl set-hostname master这部需要优先做,再初始化之后kubernetes会使用hostname作为节点名称
-
初始化
# sudo kubeadm init # 这一步非常耗时, 需要拉去镜像 sudo kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.16.4 --pod-network-cidr=10.244.0.0/16执行结果如下:
在执行完成后, 根据提示执行:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
-
配置pod network
# 执行成功后,会出现/etc/cni/net.d/ kubectl apply https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml这里提供一份我使用的.yml文件: github.com/Houchengisn…
Reset
当你安装失败或者其他什么原因需要重置Node(包括Master和Worker)时:
sudo kubeadm reset
Generate token
token主要用于子节点加入集群,我们可以使用方式生成命令:
# 生成join command
kubeadm token create --print-join-command
- 查看Token
# 查询token list
kubeadm token list
Work Node
-
设置机器名
hostnamectl set-hostname work1 -
配置ip
vi /etc/hosts 192.168.192.11 work1 -
加入集群
kubeadm join 192.168.192.10:6443 --token znygl1.rdkprye9ibg5l27y \ --discovery-token-ca-cert-hash sha256:ae4b04bbe7aee468b410e5f20cbbbd02b80d9761dd915ecf17f88f42fa57debb
Reset
当Master节点Reset后,需要重新加入集群时,我们同样需要先执行:
sudo kubeadm reset