배치k8sssl 집단 실천 3:kubectl 명령 도구행 배치
6549 단어 k8s 클러스터 배포k8skubectl 배포
3.1 kubectl 바이너리 다운로드 및 배포
[root@k8s-master kubernetes]# wget https://dl.k8s.io/v1.10.4/kubernetes-client-linux-amd64.tar.gz
--2018-08-20 14:24:47-- https://dl.k8s.io/v1.10.4/kubernetes-client-linux-amd64.tar.gz
dl.k8s.io (dl.k8s.io)... 23.236.58.218
dl.k8s.io (dl.k8s.io)|23.236.58.218|:443... 。
HTTP , ... 302 Moved Temporarily
:https://storage.googleapis.com/kubernetes-release/release/v1.10.4/kubernetes-client-linux-amd64.tar.gz [ URL]
--2018-08-20 14:24:48-- https://storage.googleapis.com/kubernetes-release/release/v1.10.4/kubernetes-client-linux-amd64.tar.gz
storage.googleapis.com (storage.googleapis.com)... 216.58.221.144, 2404:6800:4005:808::2010
storage.googleapis.com (storage.googleapis.com)|216.58.221.144|:443... 。
HTTP , ... 200 OK
:13353257 (13M) [application/x-tar]
: “kubernetes-client-linux-amd64.tar.gz”
100%[==============================================================================>] 13,353,257 10.3MB/s 1.2s
2018-08-20 14:24:50 (10.3 MB/s) - “kubernetes-client-linux-amd64.tar.gz” [13353257/13353257])
[root@k8s-master kubernetes]# tar -zxvf kubernetes-client-linux-amd64.tar.gz
kubernetes/
kubernetes/client/
kubernetes/client/bin/
kubernetes/client/bin/kubectl
[root@k8s-master kubernetes]#
모든 노드에 나눠주는/opt/k8s/bin 실행 권한 확보
[root@k8s-master kubernetes]# cp kubernetes/client/bin/kubectl /opt/k8s/bin/
[root@k8s-master kubernetes]# chmod +x /opt/k8s/bin
[root@k8s-master kubernetes]# scp kubernetes/client/bin/kubectl root@k8s-node1:/opt/k8s/bin/
kubectl 100% 52MB 82.9MB/s 00:00
[root@k8s-master kubernetes]# scp kubernetes/client/bin/kubectl root@k8s-node2:/opt/k8s/bin/
kubectl 100% 52MB 91.6MB/s 00:00
[root@k8s-master kubernetes]#
3.2 관리자 인증서 및 개인 키 만들기
kubectl은apiserverhttps 보안 포트와 통신하고apiserver는 제공된 인증서를 인증하고 권한을 부여합니다.kubectl은 그룹 관리 도구로서 최고 권한을 부여받아야 합니다.여기에서 가장 높은 권한을 가진admin 인증서를 만듭니다.
인증서 서명 요청 만들기
[root@k8s-master admin]# cat admin-csr.json
{
"CN": "admin",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "SZ",
"L": "SZ",
"O": "system:masters",
"OU": "4Paradigm"
}
]
}
[root@k8s-master admin]#
O는 시스템:마스터스,kube-apiserver는 이 인증서를 받은 후 요청한 그룹을 시스템:마스터스로 설정합니다.미리 정의된ClusterRoleBinding cluster-admin은 Group system:masters와 Role cluster-admin을 연결하고 이 Role은 모든 API에 권한을 부여합니다.이 인증서는kubectl에서client 인증서로 사용되기 때문에hosts 필드가 비어 있습니다.
인증서 및 개인 키 생성:
/root/k8s/kubernetes/kubernetes/key/admin
[root@k8s-master admin]# cfssl gencert -ca=/etc/kubernetes/cert/ca.pem -ca-key=/etc/kubernetes/cert/ca-key.pem -config=/etc/kubernetes/cert/ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin
2018/08/20 14:45:10 [INFO] generate received request
2018/08/20 14:45:10 [INFO] received CSR
2018/08/20 14:45:10 [INFO] generating key: rsa-2048
2018/08/20 14:45:10 [INFO] encoded CSR
2018/08/20 14:45:10 [INFO] signed certificate with serial number 428475884414304130599120601246945000507451954346
2018/08/20 14:45:10 [WARNING] This certificate lacks a "hosts" field. This makes it unsuitable for
websites. For more information see the Baseline Requirements for the Issuance and Management
of Publicly-Trusted Certificates, v.1.1.6, from the CA/Browser Forum (https://cabforum.org);
specifically, section 10.2.3 ("Information Requirements").
[root@k8s-master admin]# ls
admin.csr admin-csr.json admin-key.pem admin.pem
kubeconfig 파일kubeconfig는kubectl의 설정 파일로apiserver에 접근하는 모든 정보, 예를 들어apiserver 주소,CA 인증서와 자신이 사용하는 인증서를 포함합니다.
[root@k8s-master admin]# source /opt/k8s/bin/environment.sh
#
[root@k8s-master admin]# kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/cert/ca.pem --embed-certs=true --server=${KUBE_APISERVER} --kubeconfig=kubectl.kubeconfig
#
[root@k8s-master admin]# kubectl config set-credentials admin --client-certificate=admin.pem --client-key=admin-key.pem --embed-certs=true --kubeconfig=kubectl.kubeconfig
#
[root@k8s-master admin]# kubectl config set-context kubernetes --cluster=kubernetes --user=admin --kubeconfig=kubectl.kubeconfig
#
[root@k8s-master admin]# kubectl config use-context kubernetes --kubeconfig=kubectl.kubeconfig
Switched to context "kubernetes".
[root@k8s-master admin]#
--certificate-authority:kube-apiserver 인증서의 루트 인증서를 검증합니다.client-certificate, --client-key: 방금 생성된admin 인증서와 개인 키,kube-apiserver에 연결할 때 사용하기; -embed-certs=true:ca.pem과admin.pem 인증서 내용이 생성된kubectl에 삽입됩니다.kubeconfig 파일에서 (추가하지 않을 때 인증서 파일 경로에 쓰기)
kubeconfig 파일을 사용자의 ~/에 저장합니다.kube/config 파일
[root@k8s-master admin]# ls
admin.csr admin-csr.json admin-key.pem admin.pem kubectl.kubeconfig
[root@k8s-master admin]# cp kubectl.kubeconfig ~/.kube
[root@k8s-master admin]# cd
[root@k8s-master ~]# ls -a
. anaconda-ks.cfg .bash_logout .bashrc .config environment.sh .kube .ssh
.. .bash_history .bash_profile .cache .cshrc k8s .pki .tcshrc
[root@k8s-master ~]# cd .kube/
[root@k8s-master .kube]# ls
kubectl.kubeconfig
이름 고치기 주의
[root@k8s-master ~]# cd .kube/
[root@k8s-master .kube]# ls
kubectl.kubeconfig
[root@k8s-master .kube]# mv kubectl.kubeconfig config
[root@k8s-master .kube]# ll
8
-rw------- 1 root root 6212 8 20 15:08 config
[root@k8s-master ~]# scp .kube/config root@k8s-node2:/root/.kube/
config 100% 6212 6.6MB/s 00:00
[root@k8s-master ~]# scp .kube/config root@k8s-node1:/root/.kube/
config
3.3 참고: kubectl 기본값은 ~/.kube/config 파일은 kube-apiserver 주소, 인증서, 사용자 이름 등의 정보를 읽습니다.kube/config 이 이름은 반드시 이것이어야 합니다.만약 이름이 틀리거나 경로가 틀리면 잘못 보고할 수 있다
$ kubectl get pods
The connection to the server localhost:8080 was refused - did you specify the right host or port?
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[K8s學習筆記] 透過depolyment操控pod訂閱patreon即可看到更多文章 Youtube頻道 간단한 배포 만들기 最簡單的deployment就是啟動某個image,然後不帶其他設定 可以透過 kubectl get deployment 檢查deploy的狀態 等到狀態變成...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.