복구 프로그램은 클러스터 인증서가 만료 및 etcd 및 apiserver가에서 제대로 작동하지 않을 수있다 K8S

이 극단적 인 경우, 신중한 계획과 작업을 할 수, 그것은 클러스터가 완전히 죽은하지 않습니다. 첫째, 몇 CA 루트 인증서가 만료 안 10 년의 기간이다. 우리는 이러한 루트 인증서를 기반으로 할 수 있습니다, 사용할 수있는 인증의 구성 요소를 다시 생성합니다.

다음 프로그램 단계를 달성 할 수 조기, 첫 공식화, 확인해야합니다.

첫째, 기본 문서 생산 증명서.

CA-csr.json (루트 인증서 확인, 그래서이 파일하지만, 여기에 나와 있기 때문에, 지출하지 않음)

{
   "CN": "는 Kubernetes" ,
   "키" : {
     "너 한테": "RSA" ,
     "크기"2048 
  },
   "CA" : {
     "만료": "438000h" 
  } 
}

(ca.crt 및 ca.key에서 새 자체 서명 된 루트 인증서를 생성하는 데 사용됩니다, 공유 할 수 있습니다) CA-config.json

{
     "서명" : {
         "기본" : {
             "만료": "43800h" 
        },
         "프로필" : {
             "서버" : {
                 "만료": "43800h" ,
                 "용도" : [
                     "서명" ,
                     "키 암호 용 " ,
                     "서버 인증 " 
                ] 
            },
             "클라이언트 " : {
                 "만료 ":"43800h " ,
                 "용도 " : [
                     " "서명 ,
                    "키 암호 용" ,
                     "클라이언트 인증" 
                ] 
            }
             "피어" {
                 "만료": "43800h" ,
                 "용도" :
                     "서명" ,
                     "키 암호 용" ,
                     "서버 인증" ,
                     "클라이언트 인증" 
                ] 
            } 
        } 
    } 
}

둘째,)이이 / etc /는 Kubernetes / PKI / etcd / CA 인증서 디렉토리 기준입니다 ((etcd 시리즈 인증서를 다시 생성

Etcd-server.json

{
     "CN": "etcdServer" ,
     "호스트" : [
         "127.0.0.1" ,
         "로컬 호스트" ,
         "小写主机名" ,
         "本机IP를" 
    ,
     "키" : {
         "너 한테": "RSA" ,
         "크기"2048 
    },
     "이름" [ 
        {
             "O" "etcd" ,
             "OU": "etcd 보안" ,
             "C": "CN" ,
             "L": "상하이" ,
            "ST": "상하이" 
        } 
    ] 
}
cfssl gencert -ca = ca.crt -ca 키 = ca.key -config = CA-config.json -profile = 서버 etcd-server.json | cfssljson 풀린 서버

etcd-peer.json

{
     "CN": "etcdPeer" ,
     "호스트" : [
     "127.0.0.1" ,
     "로컬 호스트" ,
     "小写主机名" ,
     "本机IP를" 
    ,
     "키" : {
         "너 한테": "RSA" ,
         "크기"2048 
    },
     "이름" [ 
        {
         "O" "etcd" ,
         "OU": "etcd 보안" ,
             "C": "CN" ,
             "L": "상하이" ,
             "ST ":"상하이 " 
        } 
    ] 
}
cfssl gencert -ca = ca.crt -ca 키 = ca.key -config = CA-config.json -profile = 피어 etcd-peer.json | cfssljson 풀린 피어

etcd-client.json

{
     "CN": "etcdClient" ,
     "키" : {
         "너 한테": "RSA" ,
         "크기"2048 
    },
     "이름" : [ 
        {
         "O": "etcd" ,
         "OU": "etcd 보안 " ,
             "C ":"CN " ,
             "L ":"상하이 " ,
             "ST ":"상하이 " 
        } 
    ] 
}
cfssl gencert -ca = ca.crt -ca 키 = ca.key -config = CA-config.json의 -profile = 클라이언트 etcd - client.json | cfssljson 풀린 클라이언트

셋째, 다시 만들 (이는 PKI 디렉토리 아래의 / etc /는 Kubernetes / CA 인증서를 기반으로 참고) apiserver 인증서를

 Apiserver.json

{
     "CN": "KUBE-apiserver" ,
     "호스트" :
         "는 Kubernetes" ,
         "kubernetes.default" ,
         "kubernetes.default.svc" ,
         "kubernetes.default.svc.cluster.local" ,
         "10.96.0.1 " ,
         "小写主机名" ,
       "本机IP를 " 
    ,
     "키 " : {
         "너 한테 ":"RSA " ,
         "크기 "2048 
    } 
}
cfssl gencert -ca = ca.crt -ca 키 = ca.key -config = CA-config.json -profile = 서버 apiserver.json | cfssljson 풀린 apiserver

apiserver-kubelet-client.json

{
     "CN": "KUBE-apiserver-kubelet 클라이언트" ,
     "키" : {
         "너 한테": "RSA" ,
         "크기"2048 
    },
     "이름" : [ 
        {
         "O": "시스템 : 마스터" 
        } 
    ] 
}
cfssl gencert -ca = ca.crt -ca 키 = ca.key -config = CA-config.json의 -profile = 클라이언트 apiserver - kubelet-client.json | cfssljson 풀린 apiserver-kubelet 클라이언트

셋째, 다시 생산 전면 프록시 인증서 (이는 PKI 디렉토리 아래의 / etc /는 Kubernetes / 전면 프록시-CA 인증서를 기반으로 참고, 그것은 반드시의 apiserver이 동일하지 CA, 인증 시퀀스 apiserver을 포함, 기억)

 전면 프록시 client.json

{
     "CN": "전면 프록시 클라이언트" ,
     "키" : {
         "너 한테": "RSA" ,
         "크기"2048 
    } 
}
cfssl gencert -ca = 전면 프록시-ca.crt의 -ca 키 = 전면 프록시 ca.key -config = CA-config.json의 -profile = 클라이언트 전면 프록시 client.json | cfssljson 풀린 전면 프록시 -고객

이 개념을 만료하지 않기 때문에 넷째,은 / etc /는 Kubernetes sa.key 경우 / PKI 디렉토리 아래, sa.pub이 존재, 당신은 업데이트 할 필요가 없습니다.

다섯째, 위의 서류 준비 후, 지금은 K8S 명령 규칙의 이름을 변경해야 할뿐만 아니라, 다른 디렉토리에 저장된 다른 파일에 따라.

여섯째, 이번에는 K8S 마스터 시작해야합니다. 다음으로, kubeconfig 수 있도록 문서, 참조 URL

https://www.cnblogs.com/netsa/p/8134000.html (부트 스트랩 구성 및 인증 kubelet)

https://www.cnblogs.com/charlieroro/p/8489515.html (구성 .kube / config 파일)

# 설정 클러스터 매개 변수 
kubectl 설정 후 SET - 클러스터 
클라이언트 인증 매개 변수 설정 # 
kubectl 설정 후 SET - 자격 증명 
# 컨텍스트 매개 변수를 설정 한 
후 SET 설정을 kubectl - 상황에 맞는 
# 기본 컨텍스트 설정 
kubectl 설정 사용 -context
세븐에 의해 이러한 문서를 잘 활용 한 후 , 위치 K8S 설치, 배포 파일를 다시 시작 kubelet를 클러스터 좋은를 다시 시작 할 수 있어야한다.

추천

출처www.cnblogs.com/aguncn/p/10936774.html