1、配置阿里云kubernetes 的yum源
阿里云镜像地址:
复制的连接地址
编辑新文件
[root@master yum.repos.d]# vim kubernetes.repo
[kubernetes]
name=Kubernetes Repo
baseurl=
gpgcheck=1
gpgkey=
enabled=1
下载key文件与
wget
导入key
[root@master yum.repos.d]# rpm --import yum-key.gpg
[root@master yum.repos.d]# rpm --import rpm-package-key.gpg
2、配置阿里云docker-ce的yum源
复制 的连接地址
终端进入yum源下载
[root@master ~]# cd /etc/yum.repos.d/
[root@master yum.repos.d]# wget
3、加载刚先添加的yum源
[root@master yum.repos.d]# yum repolist
4、安装docker-ce kubelet kubeadm kubectl
yum -y install docker-ce kubelet kubeadm kubectl
5、启动docker 和设置开机自启动docker kubelet(kubelet不需要启动)
[root@master yum.repos.d]# systemctl start docker.service
[root@master yum.repos.d]# systemctl enable docker.service
[root@master yum.repos.d]# systemctl enable kubelet.service
6、确保iptabales的值为1
[root@master yum.repos.d]# cat /proc/sys/net/bridge/bridge-nf-call-iptables
1
[root@master yum.repos.d]# cat /proc/sys/net/bridge/bridge-nf-call-ip6tables
1
否则执行
[root@node02 ~]# echo "1" > /proc/sys/net/bridge/bridge-nf-call-iptables
[root@node02 ~]# echo "1" > /proc/sys/net/bridge/bridge-nf-call-ip6tables
7、关闭Swap分区
[root@master yum.repos.d]# swapoff -a
/etc/fstab注释Swap分区挂载
[root@master yum.repos.d]# vim /etc/fstab
#/dev/mapper/centos-swap swap swap defaults 0 0
8、kubeadm初始化之前需要自己拉取所需镜像
kubernetes脚本下载,如kubernetes-pull-gcr-1.13.0.sh
执行脚本拉取所需镜像
[root@master yum.repos.d]# sh kubernetes-pull-aliyun-1.13.0.sh
查看拉取的镜像
[root@master yum.repos.d]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cn-hangzhou.aliyuncs.com/openthings/k8s-gcr-io-kube-proxy v1.13.0 8fa56d18961f 10 days ago 80.2MB
k8s.gcr.io/kube-proxy v1.13.0 8fa56d18961f 10 days ago 80.2MB
k8s.gcr.io/kube-apiserver v1.13.0 f1ff9b7e3d6e 10
9、kubeadm初始化
kubeadm init --kubernetes-version=v1.13.0 --pod-network-cidr=10.224.0.0/16 --service-cidr=10.96.0.0/12
若初始化失败或之前有过初始化操作的,先执行以下操作:
kubeadm reset
ifconfig cni0 down && ip link delete cni0
ifconfig flannel.1 down && ip link delete flannel.1
rm -rf /var/lib/cni/
以上都是在master节点上操作,一下在node节点上操作
10、导入key文件,重新加载yum源
[root@node01 ~]# rpm --import yum-key.gpg
[root@node01 ~]# rpm --import rpm-package-key.gpg
[root@node01 ~]# yum repolist
11、安装docker-ce kubeadm kubelet
[root@node01 ~]# yum -y install docker-ce kubeadm kubelet
12、各node节点
启动docker 和设置开机自启动docker kubelet(kubelet不需要启动)
systemctl start docker.service
systemctl enable docker.service
systemctl enable kubelet.service
13、各node节点关闭Swap分区
[root@master yum.repos.d]# swapoff -a
/etc/fstab注释Swap分区挂载
[root@master yum.repos.d]# vim /etc/fstab
#/dev/mapper/centos-swap swap swap defaults 0 0
master节点部署flannel网络插件
查看是否成功
[root@master /]# kubectl get pods -n kube-system
遇到问题
1、k8s nodeport下访问请求未被分发到所有node的排错
现象:
从内部某个pod的容器里直接访问service的cluster地址,请求可以被正常转发到各个node上的 pod里但是从外部网络,访问nodeport发布的服务,则发现请求不能被转发到其他node上
排错发现,请求没有被转发到其他node的物理接口,说明问题出在接受请求的那台node本身上
查看iptables filter表发现,转发数据包匹配一条docker创建的规则导致丢弃
强制增加iptables -I FORWARD -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT 规则后,问题解决
但重启会失效,持久化的一个方法
1、写一个脚本
[root@docker3 ~]# cat /etc/sysconfig/add-forward-iptable-rule.sh
#!/bin/bash
sleep 10
iptables -I FORWARD -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
2、在systemd中增加一个service并开机启动
[root@docker3 ~]# cat /usr/lib/systemd/system/add-iptable-rule.service
[Unit]
Description=enable forward all for forward chain in filter table
After=network.target
[Service]
ExecStart=/bin/bash /etc/sysconfig/add-forward-iptable-rule.sh
[Install]
WantedBy=multi-user.target
3、设置开机启动
[root@docker3 sysconfig]# systemctl enable add-iptable-rule.service
Created symlink from /etc/systemd/system/multi-user.target.wants/add-iptable-rule.service to /usr/lib/systemd/system/add-iptable-rule.service.