我正在尝试探索kubernetes服务.当我读取服务定义时,我发现有targetPort和port在服务定义中指定.
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376
Run Code Online (Sandbox Code Playgroud)
这里kubernetes服务定义中port和targetPort的区别是什么?谁有人澄清这种困惑?
我正在尝试将我的微服务部署到 Kubernetes 集群中。我的集群有一个主节点和一个工作节点。我为 Kubernetes 部署的研发创建了这个集群。当我尝试部署时,我收到了如下所示的偶数错误消息,
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling <unknown> default-scheduler 0/2 nodes are available: 2 node(s) had taints that the pod didn't tolerate
Run Code Online (Sandbox Code Playgroud)
我的尝试
当我在探索错误时,我在论坛中发现了一些关于在节点中重新启动 docker 等的评论。所以之后我重新启动了 Docker。但错误仍然相同。
当我尝试该命令时,kubectl get nodes它显示两个节点都是主节点并且都是ready状态。
NAME STATUS ROLES AGE VERSION
mildevkub020 Ready master 6d19h v1.17.0
mildevkub040 Ready master 6d19h v1.17.0
Run Code Online (Sandbox Code Playgroud)
我在这里没有找到工作节点。我用一个负载均衡器创建了一个主节点 (mildevkub020) 和一个工作节点 (mildev040)。我从以下链接中遵循了 Kubernetes 的官方文档,
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/
我的问题
这个错误是因为集群问题吗?因为我没有找到集群工作节点。只有主节点。
我正在尝试使用spring MVC和spring boot框架开发一个spring cloud微服务.和Eureka服务器,Zuul,Ribbon,hystrix和Turbine用于春天云.我已经开发了一个微服务并且只实现了hystrix仪表板.我可以使用hystrix仪表板.现在我正在实施更多服务.因此,我选择涡轮机进行监控聚合.但它没有获得仪表板.我在单独的弹簧启动项目中实施了涡轮机.
我的pom.xml包含,
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-turbine</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
而我的主要课程包含,
@SpringBootApplication
@EnableHystrixDashboard
@EnableCircuitBreaker
@EnableTurbine
public class ZTurbineClientApplication {
public static void main(String[] args) {
SpringApplication.run(ZTurbineClientApplication.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
我的Turbine项目application.properties文件包含,
server.port=8085
spring.application.name=espace-Turbine
eureka.client.serviceUrl.defaultZone=http://localhost:8071/eureka/
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
turbine:
aggregator:
clusterConfig: APPCLUSTER
app-config: espaceService1,espaceService2
instanceUrlSuffix.APPCLUSTER: /hystrix.stream
Run Code Online (Sandbox Code Playgroud)
和我以前的第一个服务的application.properties文件一样
eureka.client.serviceUrl.defaultZone=http://localhost:8071/eureka/
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
spring.application.name=espaceService1
server.port=8080
eureka:
instance:
prefer-ip-address: true
leaseRenewalIntervalInSeconds: 3
leaseExpirationDurationInSeconds: 3
metadata-map:
cluster: APPCLUSTER
Run Code Online (Sandbox Code Playgroud)
第二个服务的应用程序属性文件包含,
eureka.client.serviceUrl.defaultZone=http://localhost:8071/eureka/
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
spring.application.name=espaceService2
server.port=8081
eureka:
instance:
prefer-ip-address: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Docker,Kubernetes和Jenkins为我的项目实现CI / CD管道。我的应用程序是多租户应用程序,其中数据库应用程序变量对于不同的租户来说都是不同的。
应用策略
在构建Docker映像时,我正在使用Dockerfile。然后将Dockerfile保留在SVN代码存储库中。对于每个租户,代码存储库都是相同的。在构建映像时,那时我需要为不同的租户构建不同的映像。
Dockerfile实现
在我的docker文件中,我添加了如下入口点,
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=tenant1config" , "TestProject.war"]
Run Code Online (Sandbox Code Playgroud)
如果我需要为另一个租户构建Docker映像,则需要添加
-Dspring.profiles.active=tenant2config
因此,Dockerfile中的入口点是动态的。
我的困惑
我如何找到实现此问题的良好标准方法?
当前,我正在尝试通过创建Helm图表在Kubernetes集群上部署微服务端点Docker映像。为此,我创建了图表并更改了values.yaml和deployment.yaml中的参数以进行端口更改。我也想从Angular前端访问。因此,我添加了服务类型= NodePort。当我描述服务时,它给了我30983访问的端口。
我像http:// node-ip:30983 / endpoint一样访问
但我只是得到无法访问该网站的消息。让我添加我在这里所做的详细信息:
我的values.yaml文件包含以下提到的服务类型:
和我的template / service.yaml文件包含如下内容:
而我的template / deployment.yaml文件包含以下内容:
我尝试访问如下内容:
而且只能到达站点。
注意:当我尝试描述服务时,会得到以下信息:
kubectl的输出获取pod --show-labels,如下图所示。
更新
当我们使用kubectl describe pod命令时,将如下所示:
更新错误
Readiness probe failed: HTTP probe failed with statuscode: 404
Liveness probe failed: HTTP probe failed with statuscode: 404
Run Code Online (Sandbox Code Playgroud)
如何从部署访问端点?
我正在尝试在2个不同环境开发和测试的Kuberenetes集群上部署我的微服务。我正在使用头盔图来部署我的Kubernetes服务。我正在使用Jenkinsfile部署图表。在Jenkinsfile内部,我在以下阶段添加了helm命令,
stage ('helmchartinstall')
{
steps
{
sh 'helm upgrade --install kubekubedeploy --namespace test pipeline/spacestudychart'
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里定义--namespace测试参数。但是在部署时,它将显示具有默认名称空间的控制台输出。我已经创建了名称空间test和prod。
当我检查Helm版本时,得到如下响应,
docker@mildevdcr01:~$ helm version
Client: &version.Version{SemVer:"v2.14.1",
GitCommit:"5270352a09c7e8b6e8c9593002a73535276507c0", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.0",
GitCommit:"05811b84a3f93603dd6c2fcfe57944dfa7ab7fd0", GitTreeState:"clean"}
Run Code Online (Sandbox Code Playgroud)
我在定义命名空间时犯了任何错误吗?
我正在尝试使用Jenkins,docker和Ansible实现CI/CD管道.我正在为我的版本控制系统使用SVN代码库.对于部署和SVN代码仓库,我使用的是AWS EC2.部署和代码存储位于单独的VM中.
我的要求
当我将代码提交到SVN存储库时,我需要触发一个Jenkins Job.这项工作将调用一个ansible playbook.后来它将构建项目,构建Docker镜像并部署到EC2中.因此,对于我的SVN代码库的任何更改,我需要构建Jenkins作业.
我目前的尝试
我在$ repo/hooks文件夹下的post-commit.tmpl文件中添加了以下脚本.
REPOS="$1"
REV="$2"
UUID=`svnlook uuid $REPOS`
/usr/bin/wget \
--header "Content-Type:text/plain;charset=UTF-8" \
--post-data "`svnlook changed --revision $REV $REPOS`" \
--output-document "-" \
--timeout=2 \
http://server/subversion/${UUID}/notifyCommit?rev=$REV
Run Code Online (Sandbox Code Playgroud)
以下是截图
并检查了"Jenkins Job中的Poll SCM选项":
注意:我不是在寻找分钟/小时/周的时间表来从回购中提取.而不是那样,我正在寻找代码更改,然后我需要构建Jenkins项目.所以我没有添加任何时间表.
但我仍然没有得到詹金斯的最新代码.如何找出与我的配置相关的问题?
更新了post-commit.tmpl文件
目前,我正在尝试使用DevOps自动化工具(例如Jenkins和kubernetes)来实现CI / CD管道。我正在使用它们来部署使用Spring Boot和Maven项目创建的微服务。
现在,我已经使用Jenkins和Kubernetes成功部署了我的spring boot micro服务。我使用kubernetes部署到了不同的名称空间。当我提交时,一个后提交钩子将从我的SVN存储库中工作。那个提交后的钩子将触发詹金斯工作。
我的困惑
在实现CI / CD管道时,我了解了管道中反馈回路的实现。在这里,我感到困惑,如果我需要使用反馈循环的实现,那么在这里可以遵循哪些不同的方式?
谁能建议我找到在CI / CD管道中实现反馈循环的任何有用的文档/教程?
我正在尝试访问 Kubernetes 集群部署的 Spring Boot 微服务并尝试测试 REST API。我在部署脚本中配置了节点端口方法。但是当我尝试使用 Postman 工具访问时,我只得到“无法得到任何响应”的响应。
我像下面的结构一样配置了service.yaml脚本,
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: NodePort
ports:
- port: 7100
targetPort: 7100
protocol: TCP
name: http
nodePort: 31007
selector:
app: my-deployment
Run Code Online (Sandbox Code Playgroud)
我的deployment.yaml如下所示,
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
labels:
app: my-deployment
spec:
replicas: 1
selector:
matchLabels:
app: my-deployment
template:
metadata:
labels:
app: my-deployment
annotations:
date: "+%H:%M:%S %d/%m/%y"
spec:
imagePullSecrets:
- name: "regcred"
containers:
- name: my-deployment-container
image: spacestudymilletech010/spacestudysecurityauthcontrol:latest
imagePullPolicy: Always …Run Code Online (Sandbox Code Playgroud) 当我使用 Spring Boot 使用 JPQL 查询获取数据库数据并尝试循环数据时,出现以下错误,
{
"message": "[Ljava.lang.Object; cannot be cast to com.spacestudy.model.RoomCPCMapping",
"error": "Internal Server Error",
"path": "/spacestudy/rockefeller/survey/surveyform/occupant/getClientCPCWithPercentage"
}
Run Code Online (Sandbox Code Playgroud)
我的存储库查询如下所示,
@Query("SELECT u.nCCPCode,u.nPercent FROM RoomCPCMapping u JOIN u.clientCPC ur where u.nRoomAllocationId=:nRoomAllocationId")
List<RoomCPCMapping> findNCCPCodeByNRoomAllocationID(@Param(value="nRoomAllocationId") Integer nRoomAllocationId );
Run Code Online (Sandbox Code Playgroud)
我正在调用如下所示的查询函数,
List<RoomCPCMapping>
roomCpcMappingCodeObj = roomCPCMappingRepositoryObj.findNCCPCodeByNRoomAllocationID(nRoomAllocationID);
Run Code Online (Sandbox Code Playgroud)
通过使用结果对象,我试图像下面这样循环,
for(RoomCPCMapping rpcLoopObj:roomCpcMappingCodeObj)
{
if(clientCpcCodeMappingLoopObj.nClientCPCMappingId==rpcLoopObj.getnCCPCode())
{
clientCpcCodeMappingLoopObj.nPercentage=rpcLoopObj.nPercent;
}
}
Run Code Online (Sandbox Code Playgroud)
我的模型类如下所示,
@Entity
@Table(name="roomccpcmapping")
public class RoomCPCMapping implements Serializable
{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "roomccpcmapping_seq_generator")
@SequenceGenerator(name = "roomccpcmapping_seq_generator", …Run Code Online (Sandbox Code Playgroud) kubernetes ×6
jenkins ×2
spring-boot ×2
docker ×1
dockerfile ×1
environment ×1
java ×1
jpa ×1
maven ×1
port ×1
service ×1
spring-cloud ×1
svn ×1
turbine ×1