Linux操作文档-部署K8S集群
文章目录Linux操作文档-部署K8S集群一.基本环境1.关闭防火墙,SELinux,禁用swap,安装docker,iptables清空2.开启免密传送二.部署kubeadm1.kubernetes的yum源安装2.初始化集群3.在其他节点加入集群4.kubectl命令自动补全工具(master端)Linux操作文档-部署K8S集群一.基本环境masternode01node02192.168.
·
文章目录
Linux操作文档-部署K8S集群
一.k8s架构
组件 | 作用 |
---|---|
kubectl | k8s的命令行端,用来发送客户的操作指令 |
API server | 是k8s集群的前端接口,各种客户端工具以及k8s的其他组件可以通过他管理k8s集群的各种资源。他提供了http/https RESTful API,即k8s API. |
Scheduler | 负责决定将Pod放在哪个Node上运行。在调度时,会充分考虑集群的拓扑结构,当前各个节点的负载情况,以及应对高可用、性能、数据亲和性需求。 |
Controller Manager | 负责管理集群的各种资源,保证资源处于预期的状态。它由多种Controller组成。 |
Etcd | 负责保存k8s集群的配置信息和各种资源的状态信息。当数据发生变化时,etcd会快速的通知k8s相关组件。 |
Pod | k8s集群的最小组成单位。一个Pod内,可以运行一个或多个容器。大多数情况下,一个Pod内只有一个Container容器。 |
Flannel | 是k8s集群网络方案,可以保证Pod的跨主机通信。 |
Kubelet | 它是Node的代理,当Scheduler确定某个Node上运行Pod之后,会将Pod的具体配置信息发送给该节点的Kubelet,Kubelet会根据这些信息创建和运行容器,并向Master报告运行状态。 |
kube-proxy | 负责将访问service的TCP/UDP数据流转发到后端的容器。如果有多个副本,kube-proxy会实现负载均衡。 |
二.基本环境
master | node01 | node02 |
---|---|---|
192.168.1.100 | 192.168.1.110 | 192.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
更多推荐
已为社区贡献2条内容
所有评论(0)