Centos7 搭建kubernetes 1.13.1

Centos7 搭建kubernetes 1.13.1

基础环境:

三台主机 一台master 二台node

192.168.1.70 k8s-master

192.168.1.68 k8s-node1

192.168.1.69 k8s-node2

系统设置:

  1. 修改三台机器的主机名:
    hostnamectl set-hostname k8s-$hostname

  2. 设置hosts本地解析:
    vim /etc/hosts
    192.168.1.70 k8s-master
    192.168.1.68 k8s-node1
    192.168.1.69 k8s-node2

  3. 关闭防火墙:
    systemctl stop firewalld #关闭防火墙
    systemctl disable firewalld #开机禁用

  4. 关闭selinux:
    sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config

  5. 关闭NetworkManager:
    systemctl disable NetworkManager

  6. 设置时间同步,所有机器上安装 chrony:
    yum install -y chrony
    vim /etc/chrony.conf
    #server 0.centos.pool.ntp.org iburst
    #server 1.centos.pool.ntp.org iburst
    #server 2.centos.pool.ntp.org iburst
    #server 3.centos.pool.ntp.org iburst
    server time1.aliyun.com iburst

systemctl enable chronyd && systemctl restart chronyd ###启动并同步时间

chronyc sources -v 查看同步时间状态

^* 表示成功 ^? 表示失败

注: 这一步也可以使用其它时间同步工具比如:ntpdate 。

  1. 安装基础服务: yum install -y net-tools epel-release yum install -y vim yum-utils device-mapper-persistent-data lvm2

  2. 重启所有主机:reboot

部署kubernetes 1.13.1

1.配置docker源 安装 docker-ce 18.06

下载 docker-ce 源:

 wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo 

配置 docker-ce 使用国内源

sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo  

安装 docker-ce 18.06

yum install docker-ce-18.06.1.ce-3.el7

docker 启动并设置开机自启

systemctl enable docker.service && systemctl start docker.service   

2.部署kubernetes

配置 kubernetes 的yum源:

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=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安装 kubeadm, kubelet and kubectl :

yum -y install  kubeadm-1.13.1* kubectl-1.13.1*  kubelet-1.13.1* kubernetes-cni-0.6.0
systemctl enable kubelet && systemctl start kubelet        ###kubelet 启动并设置开机自启

调整内核参数

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
​
# 配置Linux系统的ip转发功能,首先保证硬件连通,然后打开系统的转发功能
echo "1" > /proc/sys/net/ipv4/ip_forward
​
swapoff -a #手动关闭swap(swap必须关闭)
配置忽略swap:
vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
​
sysctl --system
sysctl -p /etc/sysctl.d/k8s.conf
ls /proc/sys/net/bridge

下载镜像,由于一些原因,我们需要从国内镜像仓库下载后改名为镜像:
 

docker 镜像下载
docker pull mirrorgooglecontainers/kube-apiserver-amd64:v1.13.1
docker pull mirrorgooglecontainers/kube-controller-manager-amd64:v1.13.1
docker pull mirrorgooglecontainers/kube-scheduler-amd64:v1.13.1
docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.13.1
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd-amd64:3.2.24
docker pull coredns/coredns:1.2.6
 
### 修改镜像tag标签
docker tag mirrorgooglecontainers/kube-controller-manager-amd64:v1.13.1 k8s.gcr.io/kube-controller-manager:v1.13.1
docker tag mirrorgooglecontainers/kube-scheduler-amd64:v1.13.1 k8s.gcr.io/kube-scheduler:v1.13.1
docker tag mirrorgooglecontainers/kube-apiserver-amd64:v1.13.1 k8s.gcr.io/kube-apiserver:v1.13.1
docker tag mirrorgooglecontainers/kube-proxy-amd64:v1.13.1 k8s.gcr.io/kube-proxy:v1.13.1
docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag mirrorgooglecontainers/etcd-amd64:3.2.24 k8s.gcr.io/etcd:3.2.24
docker tag coredns/coredns:1.2.6 k8s.gcr.io/coredns:1.2.6
 
#删除不需要的镜像
docker rmi mirrorgooglecontainers/kube-apiserver-amd64:v1.13.1
docker rmi mirrorgooglecontainers/kube-controller-manager-amd64:v1.13.1
docker rmi mirrorgooglecontainers/kube-scheduler-amd64:v1.13.1
docker rmi mirrorgooglecontainers/kube-proxy-amd64:v1.13.1
docker rmi mirrorgooglecontainers/pause:3.1
docker rmi mirrorgooglecontainers/etcd-amd64:3.2.24
# 查看
docker images

注:以上步骤需在个节点都执行。

初始化: (主节点执行)集群初始化(请记录初始化最后打印出的kubeadm join 信息)

kubeadm init --pod-network-cidr=10.244.0.0/16   --apiserver-advertise-address=192.168.1.68     --kubernetes-version=v1.13.1 --ignore-preflight-errors=Swap

初始化后保存信息:

kubeadm join 192.168.1.68:6443 --token xpfgnh.gl1p5qjyrcxjenqr --discovery-token-ca-cert-hash sha256:6ce9a80650c855d7f99585f8810ae247866f83311c0102e5596e3f20b1e4c15d
#复制配置
mkdir ~/.kube
cp -i /etc/kubernetes/admin.conf ~/.kube/config
chown $(id -u):$(id -g) ~/.kube/config

#加载 k8s 环境变量
export KUBECONFIG=/etc/kubernetes/admin.conf
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

安装 network addon,要docker之间能互相通信需要做些配置,这里用Flannel来实现:

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

###kube-flannel.yml 有可能下载不下来,多试几次

node加入集群,需要使用到刚刚保存的信息:

#在二台node上执行:
# 初始化log 中的join信息拼接上 --ignore-preflight-errors=Swap,否则会报错

kubeadm join 192.168.1.68:6443 --token xpfgnh.gl1p5qjyrcxjenqr --discovery-token-ca-cert-hash sha256:6ce9a80650c855d7f99585f8810ae247866f83311c0102e5596e3f20b1e4c15d   --ignore-preflight-errors=Swap

#确认日志无报错

#主节点查询 Ready 说明节点加入集群正常
[root@k8s-master ~]# kubectl get nodes
NAME         STATUS   ROLES    AGE   VERSION
k8s-master   Ready    master   10d   v1.13.10
k8s-node01   Ready    <none>   10d   v1.13.10
k8s-node02   Ready    <none>   10d   v1.13.10

至此1.13.1集群建立完毕。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值