服务发现是什么意思?
将容器应用部署到集群时,其服务地址,即IP和端口, 是由集群系统动态分配的。那么,当我们需要访问这个服务时,如何确定它的地址呢?这时,就需要服务发现(Service Discovery)了。
k8s是什么?
Kubernetes(k8s)是自动化容器操作的开源平台。
k8s有什么用?
使用Kubernetes可以:
- 自动化容器的部署和复制
- 随时扩展或收缩容器规模
- 将容器组织成组,并且提供容器间的负载均衡
- 很容易地升级应用程序容器的新版本
- 提供容器弹性,如果容器失效就替换它,等等...
怎么用?
通过配置文件来创建资源?
除了某些强制性的命令,如:kubectl run或者expose等,会隐式创建rc或者svc,k8s还允许通过配置文件的方式来创建这些操作对象。
通常,使用配置文件的方式会比直接使用命令行更可取,因为这些文件可以进行版本控制,而且文件的变化和内容也可以进行审核,当使用及其复杂的配置来提供一个稳健、可靠和易维护的系统时,这些点就显得非常重要。
在声明定义配置文件的时候,所有的配置文件都存储在YAML或者JSON格式的文件中并且遵循k8s的资源配置方式。
kubectl可以创建、更新、删除和获得API操作对象,当前apiVersion、kind和name会组成一个API Path以供kubectl来调用。
配置文件参数注释?
1 apiVersion: v1 //描述RC对象的版本是v1
2 kind: ReplicationController //我现在在声明RC对象
3 metadata: //metadata中的是对此RC对象描述信息
4 name: myweb //此RC对象在default命名空间中名为myweb,同一个命名空间中的命名一定是不同的
5 spec: //spec中是对RC对象的具体描述
6 replicas: 5 //我要创建5个副本,单位当然是pod
7 selector: //选择器,用来选择对象的
8 app: myweb //我选择了标签为app: myweb的pod
9 template: //模版,以下用来描述创建的pod的模版
10 metadata: //对pod模版描述的元数据
11 labels: //给以下的东西打上标签,以让selector来选择
12 app: myweb //给pod模版打上app: myweb这样的标签
13 spec: //对pod模版的具体描述
14 containers: //以下就是要放入pod模版中的容器了
15 - image: kubeguide/tomcat-app:v1 //选择镜像
16 name: myweb //容器名
17 resources: //给该容器分配的资源大小
18 limits:
19 cpu: "2"
20 memory: 4Gi
21 ports: //容器端口号
22 - containerPort: 8080
23 env: //给该容器设置环境变量,这里就可以将mysql与我们的tomcat连接
24 - name: MYSQL_SERVICE_HOST
25 value: 'mysql'
26 - name: MYSQL_SERVICE_PORT
27 value: '3306'
集群认证?
认证和授权是两个很重要的基本需求。
CA 的职责就是签发证书,并告诉用户“这个公钥是我发的,靠谱”。