Linux操作文档-部署K8S集群

一.k8s架构

在这里插入图片描述

组件作用
kubectlk8s的命令行端,用来发送客户的操作指令
API server是k8s集群的前端接口,各种客户端工具以及k8s的其他组件可以通过他管理k8s集群的各种资源。他提供了http/https RESTful API,即k8s API.
Scheduler负责决定将Pod放在哪个Node上运行。在调度时,会充分考虑集群的拓扑结构,当前各个节点的负载情况,以及应对高可用、性能、数据亲和性需求。
Controller Manager负责管理集群的各种资源,保证资源处于预期的状态。它由多种Controller组成。
Etcd负责保存k8s集群的配置信息和各种资源的状态信息。当数据发生变化时,etcd会快速的通知k8s相关组件。
Podk8s集群的最小组成单位。一个Pod内,可以运行一个或多个容器。大多数情况下,一个Pod内只有一个Container容器。
Flannel是k8s集群网络方案,可以保证Pod的跨主机通信。
Kubelet它是Node的代理,当Scheduler确定某个Node上运行Pod之后,会将Pod的具体配置信息发送给该节点的Kubelet,Kubelet会根据这些信息创建和运行容器,并向Master报告运行状态。
kube-proxy负责将访问service的TCP/UDP数据流转发到后端的容器。如果有多个副本,kube-proxy会实现负载均衡。

二.基本环境

masternode01node02
192.168.1.100192.168.1.110192.168.1.120

Centos 7.6 CPU:双核 内存:2G 3个node节点时间同步 主机名不同

1.关闭防火墙,SELinux,禁用swap,安装docker,iptables清空

master ~]# hostname master
master ~]# bash            //修改主机名
master ~]# systemctl stop firewalld
master ~]# systemctl disable firewalld   //关闭防火墙
master ~]# iptables -F
master ~]# iptables-save     //清空iptables
master ~]# vim /etc/sysconfig/selinux
SELINUX=disabled                 //关闭SELinux
master ~]# swapoff -a         //禁用swap
master ~]# vim /etc/fstab 
/dev/mapper/cl-swap     swap                    swap    defaults        0 0                 //修改
master ~]# free -h            //确认swap关闭
              total        used        free      shared  buff/cache   available
Mem:           1.8G        464M        911M        9.6M        446M        1.1G
Swap:            0B          0B          0B

其余节点同上;

2.开启免密传送

master ~]# vim /etc/hosts    //域名解析
192.168.1.100 master        //添加
192.168.1.110 node01        //添加
192.168.1.120 node02        //添加
master ~]# ssh-keygen -t rsa       //连续点击3次回车
master ~]# ssh-copy-id root@node01
master ~]# ssh-copy-id root@node02
master ~]# vim /etc/sysctl.conf       //打开桥接功能
net.ipv4.ip_forward = 1     //添加
net.bridge.bridge-nf-call-iptables = 1     //添加
net.bridge.bridge-nf-call-ip6tables = 1    //添加
master ~]# sysctl -p     //如果提示没有文件夹过目录输入下面命令
master ~]# modprobe br_netfilter
master ~]# sysctl -p     //其他节点也做
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
master ~]# scp /etc/sysctl.conf root@node01:/etc/sysctl.conf  
master ~]# scp /etc/sysctl.conf root@node02:/etc/sysctl.conf  //传送到其他节点

三.部署kubeadm

1.kubernetes的yum源安装

master ~]# 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
master ~]# scp /etc/yum.repos.d/docker-ce.repo   node01:/etc/yum.repos.d/
master ~]# scp /etc/yum.repos.d/kubernetes.repo node01:/etc/yum.repos.d/     //将yum源文件传送到其他节点,node02同上
master yum.repos.d]# yum -y install kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0      //master节点部署三个组件
node01 ~]# yum -y install kubelet-1.15.0 kubeadm-1.15.0
node02 ~]# yum -y install kubelet-1.15.0 kubeadm-1.15.0    //其余节点安装两个组件

2.初始化集群

导入并解压准备好的镜像文件

master images]# ls
coredns-1-3-1.tar   kube-apiserver-1-15.tar   kube-scheduler-1-15.tar
etcd-3-3-10.tar     kube-controller-1-15.tar  pause-3-1.tar
flannel-0.11.0.tar  kube-proxy-1-15.tar
master images]# for i in *;do docker load < $i;done   //导入镜像
master images]# scp kube-proxy-1-15.tar flannel-0.11.0.tar pause-3-1.tar node01:/root/images/          
master images]# scp kube-proxy-1-15.tar flannel-0.11.0.tar pause-3-1.tar node02:/root/images/       //其他节点导入3个镜像
master images]# 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       //初始化集群

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xXwELiJL-1601570280318)(C:\Users\Ha’se’e\Desktop\lADPDgQ9vdSQW6bNAjrNA2Y_870_570.jpg_720x720q90g.jpg)]

master images]# mkdir -p $HOME/.kube
master images]#   sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
master images]#   sudo chown $(id -u):$(id -g) $HOME/.kube/config       
master images]# kubectl get node     //查看节点状态
NAME     STATUS     ROLES    AGE   VERSION
master   NotReady   master   13m   v1.15.0    //master未就绪
master images]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml        //安装组件(flannel)国外网需反复执行
master images]# kubectl get node    //再次查看节点状态
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   28m   v1.15.0

3.在其他节点加入集群

node01 images]# ls      //验证是否有镜像
flannel-0.11.0.tar  kube-proxy-1-15.tar  pause-3-1.tar
node01 images]# kubeadm join 192.168.1.100:6443 --token uqqm41.qed0cvd1gqxqhdqg     --discovery-token-ca-cert-hash sha256:fcab88eb2ec9c9512e34d08940233f69eec31a24cb6b0eaf228d8b49de03c00a                //执行集群秘钥(每个人的秘钥都不同)
node02 images]# kubeadm join 192.168.1.100:6443 --token uqqm41.qed0cvd1gqxqhdqg     --discovery-token-ca-cert-hash sha256:fcab88eb2ec9c9512e34d08940233f69eec31a24cb6b0eaf228d8b49de03c00a
master images]# kubectl get po -n kube-system  //保证所有pod都是开启状态
NAME                             READY   STATUS    RESTARTS   AGE
coredns-5c98db65d4-6dc8b         1/1     Running   0          44m
coredns-5c98db65d4-vll74         1/1     Running   0          44m
etcd-master                      1/1     Running   0          43m
kube-apiserver-master            1/1     Running   0          43m
kube-controller-manager-master   1/1     Running   0          43m
kube-flannel-ds-m75sc            1/1     Running   0          28m
kube-proxy-f7tgc                 1/1     Running   0          44m
kube-scheduler-master            1/1     Running   0          43m
master ~]# kubectl get node     //验证节点
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   5d    v1.15.0
node01   Ready    <none>   5d    v1.15.0
node02   Ready    <none>   5d    v1.15.0

4.kubectl命令自动补全工具(master端)

  146  yum -y install bash-completion
  147  source /usr/share/bash-completion/bash_completion
  148  source <(kubectl completion bash)
  149  echo "source <(kubectl completion bash)" >> ~/.bashrc

-completion/bash_completion
148 source <(kubectl completion bash)
149 echo “source <(kubectl completion bash)” >> ~/.bashrc




Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐