k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且可以做到故障自愈,例如一个服务器挂了,可以自动将这个服务器上的服务调度到另外一个主机上进行运行,无需进行人工干涉。
(Kubernetes(K8S)是谷歌的第三个容器管理系统(前两个:Borg、Omega,这两个是谷歌内部系统,k8s是开源的),Kubernetes在Docker技术之上,为容器化的应用提供了资源调度、部署运行、服务发现和扩容缩容等丰富多样的功能。)
Kubernetes 的具体工作原理就是根据可用计算资源和每个容器的资源要求,管理计算实例集群,并调度要在集群上运行的容器。在逻辑分组中运行的容器被称为 Pod,您可以将一个或多个容器作为一个 Pod 进行运行和扩展
Kubernetes 控制层面软件确定何时何地运行 Pod、管理流量路由选择,以及根据利用率或您定义的其他指标扩展 Pod。Kubernetes 可以根据资源需求自动在集群上启动 Pod,并在 Pod 或它们运行的实例出现故障时自动重启 Pod。每个 Pod 都会获得一个 IP 地址和一个 DNS 名称,Kubernetes 用它们来连接您的服务和外部流量。
两台或三台虚拟机这里我选择两台
master节点---10.0.0.10(nat网卡)
node节点---10.0.0.20(nat网卡)
两台主机的cpu数量必须为2或以上
在搭建过程中一定要注意在master节点或是node节点上操作
1、关闭防火墙、selinux、修改hosts文件
master、node节点同步操作
[root@master ~]# systemctl stop firewalld && systemctl disable firewalld
[root@master ~]# vi /etc/selinux/config
SELINUX=disabled
[root@master ~]# vi /etc/hosts //做主机映射
10.0.0.10 s1
10.0.0.20 s2
2、双向登录
master、node节点同步操作
[root@master ~]# ssh-keygen //一直按回车键
[root@master ~]# ssh-copy-id node
[root@node ~]# ssh-keygen
[root@node ~]# ssh-copy-id master
3、关闭swap(会影响性能,一般关闭掉)
master节点操作
[root@master ~]# swapoff -a //临时关闭swap
[root@master ~]# vi /etc/fstab //永久关闭
#/dev/mapper/centos-swap swap swap defaults 0 0
4、安装docker
master、node节点同步操作
[root@master ~]# yum -y install docker
5、修改配置文件、启动docker
master节点操作
[root@master ~]# vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://ocfyrwaf.mirror.aliyuncs.com"]
}
[root@master ~]# systemctl start docker && systemctl enable docker
[root@master ~]# systemctl daemon-reload
6、启动docker
node节点操作
[root@node ~]# systemctl daemon-reload
[root@node ~]# systemctl start docker && systemctl enable docker
7、配置转发参数
master、node节点同步操作
[root@master ~]# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
[root@master ~]# sysctl -p //配置生效
8、添加k8s的yum源
master、node节点同步操作
[root@master ~]# vi /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
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
9、安装k8s并启动(安装的是18.2版本)
master、node节点同步操作
[root@master ~]# yum list
[root@master ~]# yum install -y kubeadm-1.18.2-0 kubectl-1.18.2-0 kubelet-1.18.2-0
[root@master ~]# systemctl start kubelet && systemctl enable kubelet
10、初始化kubernetes集群
master节点操作
[root@master ~]# kubeadm init --kubernetes-version=v1.18.2 --apiserver-advertise-address=10.0.0.10 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16
! 以下内容需要复制出来,后面操作需要用到
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/configYou should now deploy a pod network to the cluster.
Run "systemctl restart kubelet[podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 10.0.0.10:6443 --token f39ovk.9ph4xfnuuoibg08a \
--discovery-token-ca-cert-hash sha256:70d92948832da9007b9ec4447c28663e6d66c68fe737c3d88ead18f5a0d19659执行这三条命令
[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
把calico_v3.10.yaml 上传到master节点的root目录下
修改地址为仓库的地址
[root@master ~]# vi calico_v3.10.yaml
620 value: "10.244.0.0/16" //修改为当前主机的ip网段
运行即可
[root@master ~]# systemctl restart kubelet
[root@master ~]# kubectl apply -f calico_v3.10.yaml
将node节点加入master节点中
[root@node ~]# kubeadm join 10.0.0.10:6443 --token fami7h.7mab277ujskq720s --discovery-token-ca-cert-hash sha256:d97e0674fa3f7da0a924b9ea6c5a29e1919545ce4ecdf617b4302221338643fc
最后重启一下kubelet,出现ready则成功
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 11m v1.18.2
node Ready
5m13s v1.18.2
这样kubernetes集群基础环境就搭建成功,不限于两台虚拟机搭建,也可以使用三台,操作方法不变,master节点只有一台,node节点可以有几台。若搭建过程中出现问题,请上度娘或其他网站查询
新手上路,不吝赐教