k8s安装

1、配置阿里云kubernetes 的yum源

阿里云镜像地址:https://mirrors.aliyun.com/kubernetes/yum/repos/

复制kubernetes-el7-x86_64/的连接地址

编辑新文件

[root@master yum.repos.d]# vim kubernetes.repo

[kubernetes]

name=Kubernetes Repo

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

gpgcheck=1

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

enabled=1

下载key文件yum-key.gpg与rpm-package-key.gpg

wget https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

导入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源

https://mirrors.aliyun.com/docker-ce/linux/centos/

复制docker-ce.repo 的连接地址

终端进入yum源下载docker-ce.repo

[root@master ~]# cd /etc/yum.repos.d/

[root@master yum.repos.d]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

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初始化之前需要自己拉取所需镜像

到https://github.com/openthings/kubernetes-tools/tree/master/kubeadm/2-images找最新的

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网络插件

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

查看是否成功

[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.
————————————————
版权声明:本文为CSDN博主「扶柳清风」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/s526294412/article/details/100155200

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值