K8S和docker之间的关系?K8S是一个容器化管理平台,docker是一个容器。
Kubernetes是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明配置和自动化。Kubnernetes拥有一个庞大且快速增长的生态系统。Kubernetes服务、支持和工具广泛应用。
Kurbnetes是一个完备的分布式系统支撑平台。具有完备的集群管理能力,多扩多层次的安全防和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、内建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制 以及多粒度的资源配额管理能力。
在集群管理方面,Kurbnetes将集群中的机器划分为一个Master节点和一群工作节点Node,其中在Master节点运行着集群管理的一组进程kube-apiserver、kube-controller-manager和kube-scheduler,这些进程实现了整个集群的资源管理、Pod调度、弹性伸缩、安全控制、系统监控和纠错等管理能力,并且都是全自动完成的。Node作为集群中的工作节点,运行真正的应用程序,在Node上Kubernetes管理 的最小运行单元是Pod,Node上运行着Kuberntetes的Kubelet、Kube-proxy服务进程,这些服务进程负责Pod的创建、启动、监控、重启、销毁以及实现软件模的负载均衡器。
yum install -y kubelet kubeadm kubectl
systemctl enable --now kubelet
kubeadm --init \
--image-repository=registory.cn-hangzhou.aliyuncs.com/k8soso \
--kubernetes--version=v1.20.2 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
初始化后续(仅在master节点上执行)
建立用户集群权限
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chwon $(id -u):$(id -g_ $HOME/.kube/config
如果是root用户,则可以使用:export KUBECONFIG=/etc/kubernetes/admin.conf
安装集群网络插件(flannel.yaml见附件)
kubectl apply -f flannel.yaml
将工作节点加入集群
kubeadm token create --print-join-command
##注:将上面生成的token复制到node节点上执行。
kubectl get nodes
kubectl get pods -o wide
kubectl run test -t --rm --image=busybox:1.28.3
删除镜像:kubectl delete pods test
kubectl explain deployment.spec.selector
vim test.yaml
apiVersion:apps/v1 metadata: name:test kind:Deployment spec: selector: matchLabels: app:nginx template: metatdata: lables: app:nginx spec: containers: -name:nginx image:nginx |
部署:kubectl apply -f test.yaml
kubectl get pods
如果status:ImagePullBackOff,表示启动失败
修改DNS/etc/resolve.conf:nameserver 114.114.114.114
查看节点错误 信息:kubectl describe pod NAME
修改revisionHistoryLimit:10,设置节点伸缩个数,可以改为1
kubeadm 的工作原理
yum install kubectl yum install kubeadm yum install kubelet systemctl enable kubelet systemctl status kubelet.service |
二进制部署
集群角色
*master节点:管理集群
#node节点:主要用来部署应用
Master节点部署插件
#kube-apiserver:中央管理器,调度管理集群
#kube-controller-manager:控制器:管理容器,监控容器
#kube-scheduler:调度器:调度容器
flannel:提供集群间网络通信
etcd数据库
Node节点部署插 件
#kubelet:部署容器,监控容器
#kube-proxy:提供容器间的网络
需要6套认证证书
节点规划
192.168.15.51 k8s-m-01 m1
192.168.15.52 k8s-m-02 m2
192.168.15.53 k8s-m-03 m3
192.168.15.54 k8s-n-01 n1
192.168.15.55 k8s-n-02 n1
虚拟IP
192.168.15.56 k8s-m-ip vip
插件规划
#Master节点规划
kube-apiserver
kube-controller-manager
kube-scheduler
flannel
etcd
kubelet
kube-proxy
节点规划
kubelet
kube-proxy