소개
게시글
질문&답변
2022.03.19
RetryTemplate 질문 드립니다.
여기 소스에서 new DefaultRetryState(item, rollbackClassifier)를 추가했을 경우 입니다. Retry(3) 강의 27:40에서 실행 하셨을때의 경우 입니다. public class RetryItemProcessor2 implements org.springframework.batch.item.ItemProcessor, Customer> { @Autowired private RetryTemplate retryTemplate; private int cnt = 0; @Override public Customer process(String item) throws Exception { System.out.println("ItemProcessor : " + item); Classifier, Boolean> rollbackClassifier = new BinaryExceptionClassifier(true); Customer customer = retryTemplate.execute( new RetryCallback, RuntimeException>() { @Override public Customer doWithRetry(RetryContext retryContext) throws RuntimeException { System.out.println("item = " + item); if (item.equals("1") || item.equals("2")) { cnt++; throw new RetryableException("Retry Exception!! cnt : " + cnt); } return new Customer(item); } }, new RecoveryCallback() { @Override public Customer recover(RetryContext retryContext) throws Exception { return new Customer(item); } }, new DefaultRetryState(item, rollbackClassifier) ); return customer; }} @Configuration@RequiredArgsConstructorpublic class RetryTemplateConfiguration { private final JobBuilderFactory jobBuilderFactory; private final StepBuilderFactory stepBuilderFactory; private int chunkSize = 5; @Bean public Job job() { return jobBuilderFactory.get("batchjob") .incrementer(new RunIdIncrementer()) .start(step1()) .build(); } @Bean public Step step1() { return stepBuilderFactory.get("step1") ., Customer>chunk(chunkSize) .reader(new ItemReader() { int i = 0; @Override public String read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException { i++; System.out.println("ItemReader :" + i); return i > 10 ? null : String.valueOf(i); } }) .processor(retryItemProcessor()) .writer(System.out::println) .faultTolerant()// .skip(RetryableException.class)// .skipLimit(2)// .retry(RetryableException.class)// .retryLimit(2) .build(); } @Bean public ItemProcessorsuper String, Customer> retryItemProcessor() { return new RetryItemProcessor2(); } @Bean public RetryTemplate retryTemplate() { Mapextends Throwable>, Boolean> exceptionClasses = new HashMap(); exceptionClasses.put(RetryableException.class, true); FixedBackOffPolicy backOffPolicy = new FixedBackOffPolicy(); backOffPolicy.setBackOffPeriod(2000); SimpleRetryPolicy simpleRetryPolicy = new SimpleRetryPolicy(2, exceptionClasses); RetryTemplate retryTemplate = new RetryTemplate(); retryTemplate.setRetryPolicy(simpleRetryPolicy);// retryTemplate.setBackOffPolicy(backOffPolicy); return retryTemplate; }
- 0
- 3
- 502
질문&답변
2020.04.19
Dashboard 실행 중 에러가 납니다.
curl podIP:8080/hostname 해도 결과는 똑같이 time out 에러가 납니다.. kubectl logs -n kube-system calico-node-1-.. 하면 아래와 같은 로그가 나옵니다. 2020-04-19 05:05:18.630 [INFO][52] int_dataplane.go 964: Applying dataplane updates 2020-04-19 05:05:18.630 [INFO][52] ipsets.go 223: Asked to resync with the dataplane on next update. family="inet" 2020-04-19 05:05:18.630 [INFO][52] ipsets.go 306: Resyncing ipsets with dataplane. family="inet" 2020-04-19 05:05:18.632 [INFO][52] ipsets.go 356: Finished resync family="inet" numInconsistenciesFound=0 resyncDuration=1.92041ms 2020-04-19 05:05:18.632 [INFO][52] int_dataplane.go 978: Finished applying updates to dataplane. msecToApply=2.161511 kubectl logs -n kube-system kube-proxy-...를 하면 아래와 같은 로그가 나옵니다. W0417 07:05:41.437308 1 proxier.go:513] Failed to load kernel module ip_vs with modprobe. You can ignore this message when kube-proxy is running inside container without mounting /lib/modules W0417 07:05:41.438401 1 proxier.go:513] Failed to load kernel module ip_vs_rr with modprobe. You can ignore this message when kube-proxy is running inside container without mounting /lib/modules W0417 07:05:41.439420 1 proxier.go:513] Failed to load kernel module ip_vs_wrr with modprobe. You can ignore this message when kube-proxy is running inside container without mounting /lib/modules W0417 07:05:41.440400 1 proxier.go:513] Failed to load kernel module ip_vs_sh with modprobe. You can ignore this message when kube-proxy is running inside container without mounting /lib/modules W0417 07:05:41.449164 1 server_others.go:249] Flag proxy-mode="" unknown, assuming iptables proxy I0417 07:05:41.461394 1 server_others.go:143] Using iptables Proxier. I0417 07:05:41.462037 1 server.go:534] Version: v1.15.11 I0417 07:05:41.471451 1 conntrack.go:52] Setting nf_conntrack_max to 131072 I0417 07:05:41.471604 1 config.go:96] Starting endpoints config controller I0417 07:05:41.471633 1 controller_utils.go:1029] Waiting for caches to sync for endpoints config controller I0417 07:05:41.471690 1 config.go:187] Starting service config controller I0417 07:05:41.471702 1 controller_utils.go:1029] Waiting for caches to sync for service config controller I0417 07:05:41.571817 1 controller_utils.go:1036] Caches are synced for service config controller I0417 07:05:41.571885 1 controller_utils.go:1036] Caches are synced for endpoints config controller kubectl logs -n kube-system calico-kube-controller-... 하면 아래와 같은 로그가 나옵니다. 2020-04-17 07:06:24.224 [INFO][1] main.go 87: Loaded configuration from environment config=&config.Config{LogLevel:"info", ReconcilerPeriod:"5m", CompactionPeriod:"10m", EnabledControllers:"node", WorkloadEndpointWorkers:1, ProfileWorkers:1, PolicyWorkers:1, NodeWorkers:1, Kubeconfig:"", HealthEnabled:true, SyncNodeLabels:true, DatastoreType:"kubernetes"} 2020-04-17 07:06:24.226 [INFO][1] k8s.go 228: Using Calico IPAM W0417 07:06:24.226804 1 client_config.go:541] Neither --kubeconfig nor --master was specified. Using the inClusterConfig. This might not work. 2020-04-17 07:06:24.227 [INFO][1] main.go 108: Ensuring Calico datastore is initialized 2020-04-17 07:06:24.235 [INFO][1] main.go 182: Starting status report routine 2020-04-17 07:06:24.235 [INFO][1] main.go 364: Starting controller ControllerType="Node" 2020-04-17 07:06:24.235 [INFO][1] node_controller.go 133: Starting Node controller 2020-04-17 07:06:24.336 [INFO][1] node_controller.go 146: Node controller is now running 2020-04-17 07:06:24.352 [INFO][1] kdd.go 154: Cleaning up IPAM resources for deleted node node="est2" 2020-04-17 07:06:24.364 [INFO][1] kdd.go 154: Cleaning up IPAM resources for deleted node node="est1" 2020-04-17 07:06:24.368 [INFO][1] kdd.go 167: Node and IPAM data is in sync 네트워크 관련 방화벽은 관련 포트들 전부 오픈하고 설치나 실행도 서버 ip나 hostname 제외하고 가이드와 똑같이 했습니다.. ㅠㅠ 혹시 괜찮으시다면 서버 관련 정보를 알려드릴테니 한번 봐주 실 수 있으신가요?? 메일 주소 알려주시면 보내드리겠습니다..
- 1
- 14
- 1.3K
질문&답변
2020.04.17
Dashboard 실행 중 에러가 납니다.
말씀하신 curl clusterIP:9000/hostname 하면 Connection timed out이 나네요.. 위에 dashboard 외부 접근도 Error: 'dial tcp 20.108.215.3:8443: i/o timeout' 나는거 보면 말씀하신 podNetwork가 제대로 동작 안하는 것 같은데 맞나요?? 클러스터 구성 안하고 마스터 노드만 생성 하고 dashboard 접근하면 접속이 됩니다. 이전에도 클러스터 구성없이 마스터만 했을때 됐는데 똑같나 보네요. 클러스터 구성간의 문제일까요? kubectl get nodes나 calico 노드들 보면 정상으로 조회 되긴 합니다.
- 1
- 14
- 1.3K
질문&답변
2020.04.14
Dashboard 실행 중 에러가 납니다.
서버 다 지우고 처음부터 진행해서 calico는 정상적으로 동작 됐습니다. 그런데 proxy는 여전히 안되네요.. 말씀하신대로 nohup kubectl proxy --address='0.0.0.0' --port=8001 --accept-hosts='.*' 해서 netstat으로 확인하면 process는 잘 띄워진 것 같습니다. 그런데 접속을 하면 Error: 'dial tcp 20.108.215.3:8443: i/o timeout' Trying to reach: 'https://20.108.215.3:8443/' 라고 나오네요. nohup log를 보니 http: proxy error: context canceled 에러가 나옵니다. 혹시 서비스 대역 ip가 겹쳐서 안되나 해서 kubeadm init --pod-network-cidr=20.96.0.0/12 –service-cidr=30.96.0.0/12 도 해봤는데 이건 netstat으로 8001 포트 검색이 안되더라고요.. 제 서버 private IP 대역이 10.0.0.0/24 인데 IP대역 문제인가요..? 몇일째 붙잡고 있는데 안되니 너무 답답하네요..ㅠㅠ
- 1
- 14
- 1.3K
질문&답변
2020.04.13
Dashboard 실행 중 에러가 납니다.
버전은 확인해보니 1.18.0인데 버전을 바꿔서 진행해야 할까요?
- 1
- 14
- 1.3K