@[TOC]K8S搭建万事第一步,先搭建环境,K8S集群搭建参考:https://www.cnblogs.com/diantong/p/12187745.html
@[TOC]K8S各组件介绍一:自学K8S之路----【第一回】K8S各组件介绍
1.1 Master
1)、Etcd: 保存了整个集群的状态;
2)、Controller: 包含deployment,replicaset,DaemonSet,job,cronjob等
3)、Scheduler: 承接controller创建的pod,为pod选择一个合适的node。kubelet监听到Scheduler调度的pod信,下载镜像,启动容器等
4)、Apiserver: K8S的api接口,如kubectl等;
1.2 Node
1):Kube-proxy: 负责为Service提供cluster内部的服务发现和负载均衡;
2):Kubelet: 管理Kubernetes Master和Node之间的通信; 管理机器上运行的Pods和containers容器 //查看kubelet日志: journalctl -xefu kubelet
二:自学K8S之路----【第二回】各组件详细配置使用
2.1 Controller:
1)、Deployment 管理pod
例1:创建http的yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: httpd
labels:
app: httpd-demo
spec:
replicas: 3
template:
metadata:
labels:
app: httpd
spec:
containers:
- name: httpd
image: httpd
ports:
- containerPort: 80
例2:创建nginx的yaml
kind: Deployment
metadata:
name: nginxdeploy
spec:
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: nginxpod
image: docker.io/nginx
ports:
- name: http
containerPort: 80
2.2 Scheduler:
2.3 Kube-Proxy
1):Service 由于K8S的pod存在生命周期,当pod重启之后ip就会变化,故需要有一个固定的方式来进行访问。方法就是通过pod下的labels定义的标签,如app:myapp,当service内指定了selector的值为pod里面labels的值时,便能通过node的ip进行访问了。主要有三种方法:第一种:ClusterIp 第二种:NodePort 第三种:LoadBalancer。
ClusterIP: 用于为集群内Pod访问时,提供的固定访问地址,默认是自动分配地址,可使用ClusterIP关键字指定固定IP
NodePort:可以直接在外网浏览器能进行访问
例1:创建nginx的service的yaml
kind: Service
apiVersion: v1
metadata:
name: service01
spec:
selector:
app: myapp //pod内部的label标签
ports:
- protocol: TCP
port: 8088
targetPort: 80 //nginx内定义的端口
type: NodePort
外网访问如下:
2):ingress
三:自学K8S之路----【第三回】常见错误总结