部署K8s集群

前言

**什么是K8s:**k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且可以做到故障自愈,例如一个服务器挂了,可以自动将这个服务器上的服务调度到另外一个主机上进行运行,无需进行人工干涉。

K8s集群环境准备及最基本的硬件要求:

cpu:双核
Mem(内存):2G
3台dockerhost:时间同步

部署K8s集群环境

3台docker重命名,禁用swap交换分区

[root@localhost ~]# hostnamectl  set-hostname  master
[root@localhost ~]# su -
[root@localhost ~]# hostnamectl  set-hostname  node01
[root@localhost ~]# su -
[root@localhost ~]# hostnamectl  set-hostname  node02
[root@localhost ~]# su -
[root@master ~]# swapoff  -a   //临时禁用
[root@master ~]# free
              total        used        free      shared  buff/cache   available
Mem:        1867292      335448      908540        9256      623304     1290100
Swap:             0           0           0
//永久禁用
[root@master ~]# vim  /etc/fstab  //注释掉swap那一行

禁用selinux,防火墙,并关闭开机自启(3台)

[root@master ~]# vim  /etc/selinux/config
SELINUX=disabled
[root@master ~]# setenforce  0
[root@master ~]# systemctl  stop  firewalld
[root@master ~]# systemctl  disable  firewalld

编写hosts文件,设置域名解析(3台)

[root@master ~]# vim  /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.100    master
192.168.1.110    node01
192.168.1.120    node02
[root@master ~]# scp   /etc/hosts   root@192.168.1.110:/etc
[root@master ~]# scp   /etc/hosts   root@192.168.1.120:/etc

设置免密登录(master)

[root@master ~]# ssh-keygen  -t  rsa
[root@master ~]# ssh-copy-id  node01
[root@master ~]# ssh-copy-id  node02

手写iptabs桥接功能配置文件(3台)

vim /etc/sysctl.d/k8s.conf
	net.bridge.bridge-nf-call-iptables = 1
	net.bridge.bridge-nf-call-ip6tables = 1
复制到其他两台
scp   /etc/sysctl.d/k8s.conf   root@192.168.1.110:/etc/sysctl.d/
scp   /etc/sysctl.d/k8s.conf   root@192.168.1.120:/etc/sysctl.d/

添加路由转发(3台)

echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf
sysctl -p  //将路由转发生效

将手写的配置文件生效(3台)

sysctl -p /etc/sysctl.d/k8s.conf
modprobe br_netfilter  

编写文件添加yum源提供下载所需组件(3台)

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
---------------------------------------------------------------------
Yum repolist(3台)
Yum Makecache fast (3台)

下载K8s所需组件

yum -y install kubeadm-1.15.0-0 kubelet-1.15.0-0 kubectl-1.15.0-0 (master)
yum -y install kubeadm-1.15.0-0 kubelet-1.15.0-0 (node01   node02)

将K8s加入开机自启(3台)

systemctl enable kubelet.service

将所需文件上传(master)所需文件

文件提取码:ujme
mkdir images  //创建文件夹(上传到此文件夹)
cd images/
coredns-1-3-1.tar  kube-apiserver-1-15.tar   kube-proxy-1-15.tar      myflannel-11-0.tar
etcd-3-3-10.tar    kube-controller-1-15.tar  kube-scheduler-1-15.tar  pause-3-1.tar

将镜像全部导入docker

[root@master ~]# cat  >  images.sh  <<EOF
> #!/bin/bash
> for  i  in  /root/images/*
> do
> docker  load  <  $i
> done
> EOF
[root@master ~]# chmod  +x  images.sh
[root@master ~]# sh  images.sh

初始化k8s:(如果初始化失败使用Kubeadm reset)(master)

kubeadm init --kubernetes-version=v1.15.0 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap

初始化完成后(master)

[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# chown $(id -u):$(id -g) $HOME/.kube/config

查看节点信息

[root@master ~]# kubectl  get  node  //此时的主节点还没有准备好
NAME     STATUS     ROLES    AGE   VERSION
master   NotReady   master   10m   v1.15.0

创建跨主机网络(master)网络插件

文件提取码:f4ag
kubectl  apply -f kube-flannel.yml

再次查看节点(稍等)

[root@master ~]# kubectl  get  node  
NAME     STATUS     ROLES    AGE   VERSION
master   Ready      master   10m   v1.15.0

在node01和node02上传所需文件

https://pan.baidu.com/s/1qqVnURCAomKab11rTC976g  //节点所需文件  提取码:c5bk

[root@node02 ~]# mkdir   images
[root@node02 ~]# cd  images/
[root@node02 images]# ls
kube-proxy-1-15.tar  myflannel-11-0.tar  pause-3-1.tar
docker  load  <  kube-proxy-1-15.tar  &&  docker  load  <  myflannel-11-0.tar  &&   docker  load  <  pause-3-1.tar

将node01和node02加入K8s集群

kubeadm join 192.168.1.70:6443 --token x85ks8.4x5qrhw87zct1vti \
    --discovery-token-ca-cert-hash sha256:227c69c29f16521a7dccb52104710b8cdd449aa0f7cb787affb62514fc8cc9eb   //初始化后最后提示的命令  (在node01和node02上输入)

查看节点(master)(稍等片刻)

[root@master ~]# kubectl  get  node
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   25m   v1.15.0
node01   Ready    <none>   82s   v1.15.0
node02   Ready    <none>   76s   v1.15.0

确保master节点的服务都是running状态

[root@master ~]# kubectl  get  pod  --all-namespaces
NAMESPACE     NAME                             READY   STATUS    RESTARTS   AGE
kube-system   coredns-5c98db65d4-fr894         1/1     Running   0          28m
kube-system   coredns-5c98db65d4-qkqh5         1/1     Running   0          28m
kube-system   etcd-master                      1/1     Running   0          27m
kube-system   kube-apiserver-master            1/1     Running   0          27m
kube-system   kube-controller-manager-master   1/1     Running   0          27m
kube-system   kube-flannel-ds-amd64-rjnns      1/1     Running   0          4m44s
kube-system   kube-flannel-ds-amd64-tpkh5      1/1     Running   0          4m50s
kube-system   kube-flannel-ds-amd64-x425t      1/1     Running   0          13m
kube-system   kube-proxy-4qsj2                 1/1     Running   0          4m44s
kube-system   kube-proxy-gngnx                 1/1     Running   0          28m
kube-system   kube-proxy-shkw9                 1/1     Running   0          4m50s
kube-system   kube-scheduler-master            1/1     Running   0          27m

设置tab键的距离(方便舒适)(master)

[root@master ~]# vim  .vimrc
set tabstop=2
[root@master ~]# source .vimrc

将kubectl命令加入tab自动补全(master)

[root@master ~]# source  /usr/share/bash-completion/bash_completion 
[root@master ~]# source  <(kubectl  completion bash)
[root@master ~]# echo   " source  <(kubectl  completion bash)"  >>  ~/.bashrc
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值