2016-11-08 16 views
5

चला रहा है तो मैं कोरोस बीटा (1192.2.0) पर क्यूबलेट 1.4.5 के साथ कुबेरनेट स्थापित करने की कोशिश कर रहा हूं।"x509: अज्ञात प्राधिकरण द्वारा हस्ताक्षरित प्रमाणपत्र" जब क्यूबलेट

मैं नियंत्रक और कार्यकर्ता की एक थोड़ा संशोधित संस्करण का उपयोग कर रहा हूँ मैं निम्नलिखित बैश स्क्रिप्ट का उपयोग कर Gentoo Linux पर लाइसेंस बनाया https://github.com/coreos/coreos-kubernetes/tree/master/multi-node/generic

तो सामान्य रूप में

स्क्रिप्ट इंस्टॉल:

#!/bin/bash 
export MASTER_HOST=coreos-2.tux-in.com 
export K8S_SERVICE_IP=10.3.0.1 
export WORKER_IP=10.79.218.3 
export WORKER_FQDN=coreos-3.tux-in.com 
openssl genrsa -out ca-key.pem 2048 
openssl req -x509 -new -nodes -key ca-key.pem -days 10000 -out ca.pem -subj "/CN=kube-ca" 
openssl genrsa -out apiserver-key.pem 2048 
openssl req -new -key apiserver-key.pem -out apiserver.csr -subj "/CN=kube-apiserver" -config openssl.cnf 
openssl x509 -req -in apiserver.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out apiserver.pem -days 365 -extensions v3_req -extfile openssl.cnf 
openssl genrsa -out ${WORKER_FQDN}-worker-key.pem 2048 
openssl req -new -key ${WORKER_FQDN}-worker-key.pem -out ${WORKER_FQDN}-worker.csr -subj "/CN=${WORKER_FQDN}" -config worker-openssl.cnf 
openssl x509 -req -in ${WORKER_FQDN}-worker.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out ${WORKER_FQDN}-worker.pem -days 365 -extensions v3_req -extfile worker-openssl.cnf 
openssl genrsa -out admin-key.pem 2048 
openssl req -new -key admin-key.pem -out admin.csr -subj "/CN=kube-admin" 
openssl x509 -req -in admin.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out admin.pem -days 365 
echo done 

और इस openssl.cnf

[req] 
req_extensions = v3_req 
distinguished_name = req_distinguished_name 
[req_distinguished_name] 
[ v3_req ] 
basicConstraints = CA:FALSE 
keyUsage = nonRepudiation, digitalSignature, keyEncipherment 
subjectAltName = @alt_names 
[alt_names] 
DNS.1 = coreos-2.tux-in.com 
DNS.2 = coreos-3.tux-in.com 
IP.1 = 10.3.0.1 
IP.2 = 10.79.218.2 
IP.3 = 10.79.218.3 

है और यह मेरा worker-openssl.cnf

है
[req] 
req_extensions = v3_req 
distinguished_name = req_distinguished_name 
[req_distinguished_name] 
[ v3_req ] 
basicConstraints = CA:FALSE 
keyUsage = nonRepudiation, digitalSignature, keyEncipherment 
subjectAltName = @alt_names 
[alt_names] 
IP.1 = 10.79.218.3 
DNS.1 = coreos-3.tux-in.com 

मेरे नियंत्रक मशीन coreos-2.tux-in.com जो लैन आईपी 10.79.218.2

मेरी कार्यकर्ता मशीन coreos-3.tux-in.com जो लैन आईपी 10.79.218.3

पर ले कर यह लाइसेंस बनाया ठीक है पर ले कर जाता है। लेकिन जब मैं उन्हें इस्तेमाल और मुख्य मशीन पर नियंत्रक स्क्रिप्ट स्थापित करते हैं, मैं देखता हूँ कि मैं निम्न संदेश देखा जब मैं journalctl -xef -u kubelet चलाने के लिए और:

Nov 08 21:24:06 coreos-2.tux-in.com kubelet-wrapper[2018]: E1108 21:24:06.805868 2018 event.go:208] Unable to write event: 'x509: certificate signed by unknown authority' (may retry after sleeping) 
Nov 08 21:24:06 coreos-2.tux-in.com kubelet-wrapper[2018]: E1108 21:24:06.950827 2018 reflector.go:203] pkg/kubelet/kubelet.go:384: Failed to list *api.Service: Get https://coreos-2.tux-in.com:443/api/v1/services?resourceVersion=0: x509: certificate signed by unknown authority 
Nov 08 21:24:07 coreos-2.tux-in.com kubelet-wrapper[2018]: E1108 21:24:07.461042 2018 reflector.go:203] pkg/kubelet/config/apiserver.go:43: Failed to list *api.Pod: Get https://coreos-2.tux-in.com:443/api/v1/pods?fieldSelector=spec.nodeName%3D10.79.218.2&resourceVersion=0: x509: certificate signed by unknown authority 
Nov 08 21:24:07 coreos-2.tux-in.com kubelet-wrapper[2018]: E1108 21:24:07.461340 2018 reflector.go:203] pkg/kubelet/kubelet.go:403: Failed to list *api.Node: Get https://coreos-2.tux-in.com:443/api/v1/nodes?fieldSelector=metadata.name%3D10.79.218.2&resourceVersion=0: x509: certificate signed by unknown authority 
Nov 08 21:24:08 coreos-2.tux-in.com kubelet-wrapper[2018]: E1108 21:24:08.024366 2018 reflector.go:203] pkg/kubelet/kubelet.go:384: Failed to list *api.Service: Get https://coreos-2.tux-in.com:443/api/v1/services?resourceVersion=0: x509: certificate signed by unknown authority 
Nov 08 21:24:08 coreos-2.tux-in.com kubelet-wrapper[2018]: E1108 21:24:08.171170 2018 eviction_manager.go:162] eviction manager: unexpected err: failed GetNode: node '10.79.218.2' not found 
Nov 08 21:24:08 coreos-2.tux-in.com kubelet-wrapper[2018]: E1108 21:24:08.543619 2018 reflector.go:203] pkg/kubelet/kubelet.go:403: Failed to list *api.Node: Get https://coreos-2.tux-in.com:443/api/v1/nodes?fieldSelector=metadata.name%3D10.79.218.2&resourceVersion=0: x509: certificate signed by unknown authority 
Nov 08 21:24:08 coreos-2.tux-in.com kubelet-wrapper[2018]: E1108 21:24:08.543926 2018 reflector.go:203] pkg/kubelet/config/apiserver.go:43: Failed to list *api.Pod: Get https://coreos-2.tux-in.com:443/api/v1/pods?fieldSelector=spec.nodeName%3D10.79.218.2&resourceVersion=0: x509: certificate signed by unknown authority 
+0

पर अधिक जानकारी आप अन्य कुबर्नेट्स घटकों के लॉग में भी देख सकते हैं? विशेष रूप से मास्टर apiserver के। अगर मैं इसे सही तरीके से देखता हूं तो आपको 'डॉकर पीएस' वाले घटकों को देखने में सक्षम होना चाहिए और उन्हें 'डॉकर लॉग ' के साथ प्रदर्शित करना चाहिए। रॉकेट का उपयोग कर – svenwltr

+0

। और मेरे पास आपके उत्तर के लिए प्रति कंटेनर – ufk

उत्तर

1

kubelet documentation का कहना है कि --tls-cert-file ध्वज की जरूरत है सीए के बाद concatenated जा प्रमाणपत्र। आप के मामले में यह apiserver.pem है:

--tls-सर्ट-फ़ाइल HTTPS के लिए X509 प्रमाणपत्र युक्त फ़ाइल। (सीए प्रमाण, अगर कोई है, सर्वर प्रमाण के बाद concatenated)। यदि --tls-cert-file और --tls-priv-key-file प्रदान नहीं किए जाते हैं, तो सार्वजनिक पते के लिए एक स्व-हस्ताक्षरित प्रमाणपत्र और कुंजी जेनरेट की जाती है और --cert-dir को पास की गई निर्देशिका में सहेजी जाती है।

यदि मैं आपको प्रमाण पत्र पीढ़ी सही ढंग से पढ़ता हूं, तो apiserver.pem में रूट सीए नहीं है।

+0

के लिए विशिष्ट लॉग नहीं हैं। मैंने cais को apiserver.pem फ़ाइल में जोड़ दिया लेकिन परिणाम बिल्कुल वही हैं। – ufk

+0

संलग्न करके आपका क्या मतलब है? – stephanlindauer

0

मैं कोरोस 1192.2.0 पर आरकेटी के साथ क्यूबलेट का उपयोग कर रहा हूं।

[Unit] 
Description=Kubelet via Hyperkube ACI 
Requires=k8s-assets.target 
After=k8s-assets.target 
[Service] 
EnvironmentFile=/etc/proxy.env 
Environment="RKT_OPTS=--volume=resolv,kind=host,source=/etc/resolv.conf --mount volume=resolv,target=/etc/resolv.conf --volume var-log,kind=host,source=/var/log --mount volume=var-log,target=/var/log" 
Environment=KUBELET_VERSION=v1.4.0_coreos.0 
ExecStartPre=/usr/bin/mkdir -p /etc/kubernetes/manifests 
ExecStart=/usr/lib/coreos/kubelet-wrapper \ 
--api-servers=https://10.203.69.108 \ 
--register-node=true \ 
--allow-privileged=true \ 
--config=/etc/kubernetes/manifests \ 
--hostname-override=node2.my.domain \ 
--cluster_dns=10.3.0.10 \ 
--cluster_domain=cluster.local \ 
--kubeconfig=/etc/kubernetes/worker-kubeconfig.yaml \ 
--tls-cert-file=/etc/kubernetes/ssl/worker.pem \ 
--tls-private-key-file=/etc/kubernetes/ssl/worker-key.pem 
Restart=always 
RestartSec=10 
[Install] 
WantedBy=multi-user.target 

क्या महत्वपूर्ण है

--api सर्वर कि आईपी पता दर्शाए चाहिए:

इस इकाई मैं कार्यकर्ता पर kubelet शुरू करने के लिए का उपयोग करें मास्टर

--tls-cert-file जो कार्यकर्ता प्रमाणपत्र सार्वजनिक कुंजी

को इंगित करना होगा

--tls-निजी कुंजी फ़ाइल कि कार्यकर्ता प्रमाण पत्र निजी कुंजी को इंगित करना चाहिए

--kubeconfig कि एक वैध kubeconfig फ़ाइल

यहाँ मेरी kubeconfig फ़ाइल को इंगित करना चाहिए (यह

apiVersion: v1 
kind: Config 
clusters: 
- name: local 
    cluster: 
    certificate-authority: /etc/kubernetes/ssl/ca.pem 
users: 
- name: kubelet 
    user: 
    client-certificate: /etc/kubernetes/ssl/worker.pem 
    client-key: /etc/kubernetes/ssl/worker-key.pem 
contexts: 
- context: 
    cluster: local 
    user: kubelet 
    name: kubelet-context 
current-context: kubelet-context 
+0

हाय। आपके उत्तर के लिए धन्यवाद। मैंने वर्कर सर्वर बंद कर दिया और मुझे अभी भी वही त्रुटि संदेश मिलते हैं। इसका मतलब है कि यह वास्तव में कार्यकर्ता विन्यास संख्या से संबंधित नहीं है? – ufk

+0

मुझे लगता है कि आपने कार्यकर्ता/मास्टर डीएनएस नाम और कार्यकर्ता/मास्टर आईपी को उलटा कर दिया है। आपने लिखा है कि कार्यकर्ता आईपी 10.79.218.3 (प्रमाण पत्र उत्पन्न करने के लिए बैश स्क्रिप्ट में) के साथ coreos-3.tux-in.com है लेकिन आपके द्वारा लिखे जाने के बाद: "मेरी कार्यकर्ता मशीन कोरोस-2. टक्स-इन है। कॉम जो आईपी 10.79.218.3 " –

0
0. if your issue is : 
: Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "x509: invalid signature: parent certificate cannot sign this kind of certificate" 

1. look at your ca.crt 
openssl x509 -noout -text -in ca.crt, you will find below info : 

X509v3 Basic Constraints: 
    CA:FLASE 

X509v3 Basic Constraints means : 
"Basic Constraints" identifies if the subject of certificates is a CA who is allowed to issue child certificates. For a certificate that can be used to sign certificates, the info is in some sense duplicated: X509v3 Basic Constraints: CA: TRUE --- Can sign certificates. 

you should modify it to CA:TRUE through vi openssl.conf 
[ v3_ca ] 
basicConstraints = CA:true 

Regenerate your crts. 
संबंधित मुद्दे