1、创建TLS Bootstrapping Token

2、创建kubelet kubeconfig

3、创建kube-proxy kubeconfig

安装和设置kubectl
[root@master ~]# curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
[root@master ~]# chmod +x ./kubectl
[root@master ~]# mv ./kubectl /opt/kubernetes/bin/
[root@master ~]# cat kuberconfig.sh
#创建TLS Bootstrapping Token
export BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom|od -An -t x|tr -d ' ')
cat >token.csv <<EOF
${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kuberlet-bootstrap"
EOF #----------------------
#创建kubelet bootstrapping kubeconfig
export KUBE_APISERVER="https://192.168.238.130:6443" #设置集群参数
kubectl config set-cluster kubernetes \
--certificate-authority=/opt/kubernetes/ssl/ca.pem \
--embed-certs=true \
--server=${KUBE_APISERVER} \
--kubeconfig=/opt/kubernetes/ssl/bootstrap.kubeconfig #设置客户端认证参数
kubectl config set-credentials kubelet-bootstrap \
--token=${BOOTSTRAP_TOKEN} \
--kubeconfig=/opt/kubernetes/ssl/bootstrap.kubeconfig #设置上下文参数
kubectl config set-context default \
--cluster=kubernetes \
--user=kubelet-bootstrap \
--kubeconfig=/opt/kubernetes/ssl/bootstrap.kubeconfig #设置默认上下文
kubectl config use-context default --kubeconfig=/opt/kubernetes/ssl/bootstrap.kubeconfig #-------------------------
#创建kube-proxy kubeconfig文件
kubectl config set-cluster kubernetes \
--certificate-authority=/opt/kubernetes/ssl/ca.pem \
--embed-certs=true \
--server=${KUBE_APISERVER} \
--kubeconfig=/opt/kubernetes/ssl/kube-proxy.kubeconfig kubectl config set-credentials kube-proxy \
--client-certificate=/opt/kubernetes/ssl/kube-proxy.pem \
--client-key=/opt/kubernetes/ssl/kube-proxy.pem \
--embed-certs=true \
--kubeconfig=/opt/kubernetes/ssl/kube-proxy.kubeconfig kubectl config set-context default \
--cluster=kubernetes \
--user=kube-proxy \
--kubeconfig=/opt/kubernetes/ssl/kube-proxy.kubeconfig kubectl config use-context default --kubeconfig=/opt/kubernetes/ssl/kube-proxy.kubeconfig
[root@master ~]# export BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom|od -An -t x|tr -d ' ')
cat >token.csv <<EOF
${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kuberlet-bootstrap"
[root@master ~]# cat >token.csv <<EOF
> ${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kuberlet-bootstrap"
> EOF
[root@master ~]# cat token.csv
a53c293d5aaab99101e2cdae3351a2e1,kubelet-bootstrap,10001,"system:kuberlet-bootstrap"
[root@master ~]# export KUBE_APISERVER="https://192.168.238.130:6443"
[root@master ~]# kubectl config set-cluster kubernetes \
> --certificate-authority=/opt/kubernetes/ssl/ca.pem \
> --embed-certs=true \
> --server=${KUBE_APISERVER} \
> --kubeconfig=/opt/kubernetes/ssl/bootstrap.kubeconfig
Cluster "kubernetes" set.
[root@master ~]# cat /opt/kubernetes/ssl/bootstrap.kubeconfig
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURIakNDQWdhZ0F3SUJBZ0lVUHFjY20xOFN1L2lkdFVGWmRVMWwrc29qTGdnd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0ZURVRNQkVHQTFVRUF4TUthM1ZpWlhKdVpYUmxjekFlRncweE9UQTJNekF4TlRRMk1EQmFGdzB5TkRBMgpNamd4TlRRMk1EQmFNQlV4RXpBUkJnTlZCQU1UQ210MVltVnlibVYwWlhNd2dnRWlNQTBHQ1NxR1NJYjNEUUVCCkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDWE1HcUU3R2REMFd0RWczcHZmRnNlT2ZBOGNvNUJFQmR5dlRWQjdselkKdGxwR2Y4Zk4yYTVCckRua1VBNzZ0Z3drR0VDOUEvYXRrRysxd29CWDNuZFo2Y2k5cTJZbkk4YzAwdzhFbllWZAo5dG43V1c4eS9sWEtXYzZOUkd2bnRtZityMTNvUStZK3BIS3AwdUFSamh5N2h1VTlsUXc1eEVIajNOck1WeG9pCkJSaGkzTy92aHh5VzllbHhML1RmbENkUTdvbTNRbzNiVnkyak5QekUyYnNXdzdMV29BK20xTUN4K2RxVWN4ZFAKMkM4NVdITGVpQ2hhTnhDWkl3cDA2V1JTZlQwOE10bFpPMTdIK3JwOWVGc2ZDQ1RkaXJ3LzFWMCtDa1J0Szc1MQpWTkxPSkZMdHN3ejFaVVhDdVl2MURlS0sycGZlcDg5NjFyTUFzYXl5VW1GeEFnTUJBQUdqWmpCa01BNEdBMVVkCkR3RUIvd1FFQXdJQkJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQjBHQTFVZERnUVdCQlNrejJsMWYyOEUKTzZKa0ZyR2dZWm8yam9BYTdUQWZCZ05WSFNNRUdEQVdnQlNrejJsMWYyOEVPNkprRnJHZ1labzJqb0FhN1RBTgpCZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFHdmxaRzc1anpmRm5qNFpMQ0pCQVVxWFJPc3B0eXRIeE84ZUduRTQvClI5QmNETWE5RjV4WnJpeTVhekRBN3hBT0laTm1nQWIzK2hsYWhLd1NTMFUvelZBRCt2QkN3QU5UeVgzYVl4Zm4KaXJDS0cyS092SGtDNU5sMEJBWWU1eGZyTkZjTkx5NDZJTGVXYklMZ0tyMUQ4MFE4NWhmelFDQ09INUI3bE1XcwoyeHZCZ3V3cXV6RTJQMTdYTjdvU2kvNlJsUUtSbmxJRjJNM0pXdk11djI3YjN1K2Iyc3JNaWs5TTNoeDJ2UHRECnN6U0xoQ2VrbzVzbDVhcHRXd3hYN05STk5SL1A4TWI3V0Z6SEJ5RmwwMjliSVlGMkl5N3BpNVE0L1N2M0l0YzQKT3R2NXp3SmEvWEhPckZad2tMU1h4SmVKNlpGRGhITW5HTldOdkF4L0NZTXdJdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
server: https://192.168.238.130:6443
name: kubernetes
contexts: []
current-context: ""
kind: Config
preferences: {}
users: []
[root@master ~]# kubectl config set-credentials kubelet-bootstrap \
> --token=${BOOTSTRAP_TOKEN} \
> --kubeconfig=/opt/kubernetes/ssl/bootstrap.kubeconfig
User "kubelet-bootstrap" set.
[root@master ~]# cat /opt/kubernetes/ssl/bootstrap.kubeconfig
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURIakNDQWdhZ0F3SUJBZ0lVUHFjY20xOFN1L2lkdFVGWmRVMWwrc29qTGdnd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0ZURVRNQkVHQTFVRUF4TUthM1ZpWlhKdVpYUmxjekFlRncweE9UQTJNekF4TlRRMk1EQmFGdzB5TkRBMgpNamd4TlRRMk1EQmFNQlV4RXpBUkJnTlZCQU1UQ210MVltVnlibVYwWlhNd2dnRWlNQTBHQ1NxR1NJYjNEUUVCCkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDWE1HcUU3R2REMFd0RWczcHZmRnNlT2ZBOGNvNUJFQmR5dlRWQjdselkKdGxwR2Y4Zk4yYTVCckRua1VBNzZ0Z3drR0VDOUEvYXRrRysxd29CWDNuZFo2Y2k5cTJZbkk4YzAwdzhFbllWZAo5dG43V1c4eS9sWEtXYzZOUkd2bnRtZityMTNvUStZK3BIS3AwdUFSamh5N2h1VTlsUXc1eEVIajNOck1WeG9pCkJSaGkzTy92aHh5VzllbHhML1RmbENkUTdvbTNRbzNiVnkyak5QekUyYnNXdzdMV29BK20xTUN4K2RxVWN4ZFAKMkM4NVdITGVpQ2hhTnhDWkl3cDA2V1JTZlQwOE10bFpPMTdIK3JwOWVGc2ZDQ1RkaXJ3LzFWMCtDa1J0Szc1MQpWTkxPSkZMdHN3ejFaVVhDdVl2MURlS0sycGZlcDg5NjFyTUFzYXl5VW1GeEFnTUJBQUdqWmpCa01BNEdBMVVkCkR3RUIvd1FFQXdJQkJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQjBHQTFVZERnUVdCQlNrejJsMWYyOEUKTzZKa0ZyR2dZWm8yam9BYTdUQWZCZ05WSFNNRUdEQVdnQlNrejJsMWYyOEVPNkprRnJHZ1labzJqb0FhN1RBTgpCZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFHdmxaRzc1anpmRm5qNFpMQ0pCQVVxWFJPc3B0eXRIeE84ZUduRTQvClI5QmNETWE5RjV4WnJpeTVhekRBN3hBT0laTm1nQWIzK2hsYWhLd1NTMFUvelZBRCt2QkN3QU5UeVgzYVl4Zm4KaXJDS0cyS092SGtDNU5sMEJBWWU1eGZyTkZjTkx5NDZJTGVXYklMZ0tyMUQ4MFE4NWhmelFDQ09INUI3bE1XcwoyeHZCZ3V3cXV6RTJQMTdYTjdvU2kvNlJsUUtSbmxJRjJNM0pXdk11djI3YjN1K2Iyc3JNaWs5TTNoeDJ2UHRECnN6U0xoQ2VrbzVzbDVhcHRXd3hYN05STk5SL1A4TWI3V0Z6SEJ5RmwwMjliSVlGMkl5N3BpNVE0L1N2M0l0YzQKT3R2NXp3SmEvWEhPckZad2tMU1h4SmVKNlpGRGhITW5HTldOdkF4L0NZTXdJdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
server: https://192.168.238.130:6443
name: kubernetes
contexts: []
current-context: ""
kind: Config
preferences: {}
users:
- name: kubelet-bootstrap
user:
token: a53c293d5aaab99101e2cdae3351a2e1
[root@master ~]# kubectl config set-context default \
> --cluster=kubernetes \
> --user=kubelet-bootstrap \
> --kubeconfig=/opt/kubernetes/ssl/bootstrap.kubeconfig
Context "default" created.
[root@master ~]# cat /opt/kubernetes/ssl/bootstrap.kubeconfig
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURIakNDQWdhZ0F3SUJBZ0lVUHFjY20xOFN1L2lkdFVGWmRVMWwrc29qTGdnd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0ZURVRNQkVHQTFVRUF4TUthM1ZpWlhKdVpYUmxjekFlRncweE9UQTJNekF4TlRRMk1EQmFGdzB5TkRBMgpNamd4TlRRMk1EQmFNQlV4RXpBUkJnTlZCQU1UQ210MVltVnlibVYwWlhNd2dnRWlNQTBHQ1NxR1NJYjNEUUVCCkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDWE1HcUU3R2REMFd0RWczcHZmRnNlT2ZBOGNvNUJFQmR5dlRWQjdselkKdGxwR2Y4Zk4yYTVCckRua1VBNzZ0Z3drR0VDOUEvYXRrRysxd29CWDNuZFo2Y2k5cTJZbkk4YzAwdzhFbllWZAo5dG43V1c4eS9sWEtXYzZOUkd2bnRtZityMTNvUStZK3BIS3AwdUFSamh5N2h1VTlsUXc1eEVIajNOck1WeG9pCkJSaGkzTy92aHh5VzllbHhML1RmbENkUTdvbTNRbzNiVnkyak5QekUyYnNXdzdMV29BK20xTUN4K2RxVWN4ZFAKMkM4NVdITGVpQ2hhTnhDWkl3cDA2V1JTZlQwOE10bFpPMTdIK3JwOWVGc2ZDQ1RkaXJ3LzFWMCtDa1J0Szc1MQpWTkxPSkZMdHN3ejFaVVhDdVl2MURlS0sycGZlcDg5NjFyTUFzYXl5VW1GeEFnTUJBQUdqWmpCa01BNEdBMVVkCkR3RUIvd1FFQXdJQkJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQjBHQTFVZERnUVdCQlNrejJsMWYyOEUKTzZKa0ZyR2dZWm8yam9BYTdUQWZCZ05WSFNNRUdEQVdnQlNrejJsMWYyOEVPNkprRnJHZ1labzJqb0FhN1RBTgpCZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFHdmxaRzc1anpmRm5qNFpMQ0pCQVVxWFJPc3B0eXRIeE84ZUduRTQvClI5QmNETWE5RjV4WnJpeTVhekRBN3hBT0laTm1nQWIzK2hsYWhLd1NTMFUvelZBRCt2QkN3QU5UeVgzYVl4Zm4KaXJDS0cyS092SGtDNU5sMEJBWWU1eGZyTkZjTkx5NDZJTGVXYklMZ0tyMUQ4MFE4NWhmelFDQ09INUI3bE1XcwoyeHZCZ3V3cXV6RTJQMTdYTjdvU2kvNlJsUUtSbmxJRjJNM0pXdk11djI3YjN1K2Iyc3JNaWs5TTNoeDJ2UHRECnN6U0xoQ2VrbzVzbDVhcHRXd3hYN05STk5SL1A4TWI3V0Z6SEJ5RmwwMjliSVlGMkl5N3BpNVE0L1N2M0l0YzQKT3R2NXp3SmEvWEhPckZad2tMU1h4SmVKNlpGRGhITW5HTldOdkF4L0NZTXdJdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
server: https://192.168.238.130:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kubelet-bootstrap
name: default
current-context: ""
kind: Config
preferences: {}
users:
- name: kubelet-bootstrap
user:
token: a53c293d5aaab99101e2cdae3351a2e1
[root@master ~]# kubectl config use-context default --kubeconfig=/opt/kubernetes/ssl/bootstrap.kubeconfig
Switched to context "default".
[root@master ~]# cat /opt/kubernetes/ssl/bootstrap.kubeconfig
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURIakNDQWdhZ0F3SUJBZ0lVUHFjY20xOFN1L2lkdFVGWmRVMWwrc29qTGdnd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0ZURVRNQkVHQTFVRUF4TUthM1ZpWlhKdVpYUmxjekFlRncweE9UQTJNekF4TlRRMk1EQmFGdzB5TkRBMgpNamd4TlRRMk1EQmFNQlV4RXpBUkJnTlZCQU1UQ210MVltVnlibVYwWlhNd2dnRWlNQTBHQ1NxR1NJYjNEUUVCCkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDWE1HcUU3R2REMFd0RWczcHZmRnNlT2ZBOGNvNUJFQmR5dlRWQjdselkKdGxwR2Y4Zk4yYTVCckRua1VBNzZ0Z3drR0VDOUEvYXRrRysxd29CWDNuZFo2Y2k5cTJZbkk4YzAwdzhFbllWZAo5dG43V1c4eS9sWEtXYzZOUkd2bnRtZityMTNvUStZK3BIS3AwdUFSamh5N2h1VTlsUXc1eEVIajNOck1WeG9pCkJSaGkzTy92aHh5VzllbHhML1RmbENkUTdvbTNRbzNiVnkyak5QekUyYnNXdzdMV29BK20xTUN4K2RxVWN4ZFAKMkM4NVdITGVpQ2hhTnhDWkl3cDA2V1JTZlQwOE10bFpPMTdIK3JwOWVGc2ZDQ1RkaXJ3LzFWMCtDa1J0Szc1MQpWTkxPSkZMdHN3ejFaVVhDdVl2MURlS0sycGZlcDg5NjFyTUFzYXl5VW1GeEFnTUJBQUdqWmpCa01BNEdBMVVkCkR3RUIvd1FFQXdJQkJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQjBHQTFVZERnUVdCQlNrejJsMWYyOEUKTzZKa0ZyR2dZWm8yam9BYTdUQWZCZ05WSFNNRUdEQVdnQlNrejJsMWYyOEVPNkprRnJHZ1labzJqb0FhN1RBTgpCZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFHdmxaRzc1anpmRm5qNFpMQ0pCQVVxWFJPc3B0eXRIeE84ZUduRTQvClI5QmNETWE5RjV4WnJpeTVhekRBN3hBT0laTm1nQWIzK2hsYWhLd1NTMFUvelZBRCt2QkN3QU5UeVgzYVl4Zm4KaXJDS0cyS092SGtDNU5sMEJBWWU1eGZyTkZjTkx5NDZJTGVXYklMZ0tyMUQ4MFE4NWhmelFDQ09INUI3bE1XcwoyeHZCZ3V3cXV6RTJQMTdYTjdvU2kvNlJsUUtSbmxJRjJNM0pXdk11djI3YjN1K2Iyc3JNaWs5TTNoeDJ2UHRECnN6U0xoQ2VrbzVzbDVhcHRXd3hYN05STk5SL1A4TWI3V0Z6SEJ5RmwwMjliSVlGMkl5N3BpNVE0L1N2M0l0YzQKT3R2NXp3SmEvWEhPckZad2tMU1h4SmVKNlpGRGhITW5HTldOdkF4L0NZTXdJdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
server: https://192.168.238.130:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kubelet-bootstrap
name: default
current-context: default
kind: Config
preferences: {}
users:
- name: kubelet-bootstrap
user:
token: a53c293d5aaab99101e2cdae3351a2e1
[root@master ~]# kubectl config set-cluster kubernetes \
> --certificate-authority=/opt/kubernetes/ssl/ca.pem \
> --embed-certs=true \
> --server=${KUBE_APISERVER} \
> --kubeconfig=/opt/kubernetes/ssl/kube-proxy.kubeconfig
Cluster "kubernetes" set.
[root@master ~]# kubectl config set-credentials kube-proxy \
> --client-certificate=/opt/kubernetes/ssl/kube-proxy.pem \
> --client-key=/opt/kubernetes/ssl/kube-proxy.pem \
> --embed-certs=true \
> --kubeconfig=/opt/kubernetes/ssl/kube-proxy.kubeconfig
User "kube-proxy" set.
[root@master ~]# cat /opt/kubernetes/ssl/kube-proxy.kubeconfig
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURIakNDQWdhZ0F3SUJBZ0lVUHFjY20xOFN1L2lkdFVGWmRVMWwrc29qTGdnd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0ZURVRNQkVHQTFVRUF4TUthM1ZpWlhKdVpYUmxjekFlRncweE9UQTJNekF4TlRRMk1EQmFGdzB5TkRBMgpNamd4TlRRMk1EQmFNQlV4RXpBUkJnTlZCQU1UQ210MVltVnlibVYwWlhNd2dnRWlNQTBHQ1NxR1NJYjNEUUVCCkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDWE1HcUU3R2REMFd0RWczcHZmRnNlT2ZBOGNvNUJFQmR5dlRWQjdselkKdGxwR2Y4Zk4yYTVCckRua1VBNzZ0Z3drR0VDOUEvYXRrRysxd29CWDNuZFo2Y2k5cTJZbkk4YzAwdzhFbllWZAo5dG43V1c4eS9sWEtXYzZOUkd2bnRtZityMTNvUStZK3BIS3AwdUFSamh5N2h1VTlsUXc1eEVIajNOck1WeG9pCkJSaGkzTy92aHh5VzllbHhML1RmbENkUTdvbTNRbzNiVnkyak5QekUyYnNXdzdMV29BK20xTUN4K2RxVWN4ZFAKMkM4NVdITGVpQ2hhTnhDWkl3cDA2V1JTZlQwOE10bFpPMTdIK3JwOWVGc2ZDQ1RkaXJ3LzFWMCtDa1J0Szc1MQpWTkxPSkZMdHN3ejFaVVhDdVl2MURlS0sycGZlcDg5NjFyTUFzYXl5VW1GeEFnTUJBQUdqWmpCa01BNEdBMVVkCkR3RUIvd1FFQXdJQkJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQjBHQTFVZERnUVdCQlNrejJsMWYyOEUKTzZKa0ZyR2dZWm8yam9BYTdUQWZCZ05WSFNNRUdEQVdnQlNrejJsMWYyOEVPNkprRnJHZ1labzJqb0FhN1RBTgpCZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFHdmxaRzc1anpmRm5qNFpMQ0pCQVVxWFJPc3B0eXRIeE84ZUduRTQvClI5QmNETWE5RjV4WnJpeTVhekRBN3hBT0laTm1nQWIzK2hsYWhLd1NTMFUvelZBRCt2QkN3QU5UeVgzYVl4Zm4KaXJDS0cyS092SGtDNU5sMEJBWWU1eGZyTkZjTkx5NDZJTGVXYklMZ0tyMUQ4MFE4NWhmelFDQ09INUI3bE1XcwoyeHZCZ3V3cXV6RTJQMTdYTjdvU2kvNlJsUUtSbmxJRjJNM0pXdk11djI3YjN1K2Iyc3JNaWs5TTNoeDJ2UHRECnN6U0xoQ2VrbzVzbDVhcHRXd3hYN05STk5SL1A4TWI3V0Z6SEJ5RmwwMjliSVlGMkl5N3BpNVE0L1N2M0l0YzQKT3R2NXp3SmEvWEhPckZad2tMU1h4SmVKNlpGRGhITW5HTldOdkF4L0NZTXdJdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
server: https://192.168.238.130:6443
name: kubernetes
contexts: []
current-context: ""
kind: Config
preferences: {}
users:
- name: kube-proxy
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURpakNDQW5LZ0F3SUJBZ0lVTGpjOGF3SUdveFhGay9PMDYzdEM1Q2xOcmZvd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0ZURVRNQkVHQTFVRUF4TUthM1ZpWlhKdVpYUmxjekFlRncweE9UQTNNRGN4TlRReE1EQmFGdzB5T1RBMwpNRFF4TlRReE1EQmFNR2d4Q3pBSkJnTlZCQVlUQWtOT01RNHdEQVlEVlFRSUV3VlhkV2hoYmpFT01Bd0dBMVVFCkJ4TUZWM1ZvWVc0eEREQUtCZ05WQkFvVEEyczRjekVQTUEwR0ExVUVDeE1HVTNsemRHVnRNUm93R0FZRFZRUUQKRXhGemVYTjBaVzA2YTNWaVpTMXdjbTk0ZVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQwpnZ0VCQUw4UmRmU2s0aW14a0x1UnV6c3VkdkNMR3pxV3MrU282U1BtblRockFEUWZUSGtLQ3g1YzhlTXE2VFJsCkRZekJwa1VzMkFZR0ViRUhhNEIxRHc3UGw3S0FreXZvdnl2SUFOMUlsMG1SRE9adDh1SjMzb2cvMGFQOU44c0wKNURXemorY1lpTndoOGdGdEpRSlkxTFFBQVVPWUsrN1JTV2ZIVzBYYTNxQ3NsR1dLWGxCK2d4c2RKRGVVSHFXSApoakcyT3BReEpBL3pHMFE3c0ZadlE2L1BaYThhelZ4OTFoNW1YZm5vUjZpSzdES0hNQWVWZTg3WVhhbTBSNTdwCkxzU2dQY1gvOHJSbjVxSWtzeFZvSm16ZlNuQkg4ZFhFbWg0OTNublRteWtZVCtFYUVOVGpzeGlZN2N1MTZvb2QKSHpjcVdrTnNpTmR5b1dsa2xjSm1OZWxpLzZrQ0F3RUFBYU4vTUgwd0RnWURWUjBQQVFIL0JBUURBZ1dnTUIwRwpBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFQWpBQU1CMEdBMVVkCkRnUVdCQlRDTEh1SmxJYUsyWWZ0TFZFOUNrODF0RVhHUHpBZkJnTlZIU01FR0RBV2dCU2t6MmwxZjI4RU82SmsKRnJHZ1labzJqb0FhN1RBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUZqbGl0bFMyTy8xT21HekE4V2gzVXRrbgpST3FmZjYvSE5CTFZZOTFtQkN6aE8vU1FaVXpHR0p6VStOcXFJMFNlL2N4TU8xb28rbnJnUDc1QnBmSEdUM1AvCmRoZy9XRWNiWlorSHpPMHRSWmhJMkQveTNGMjJabmlmWHVkbWxEUndZM1hYV0FmMVZSandvNkJvY3RKL0RoTUYKUGFVNHJ4YTlVaFg3OWxMQ3NYS1pLRVdPbHRMb293Mk94U1NsbFBZOVJUVGx0SkJRc3ErOGZkTlFlQ0VLQ3VoUgp6UEd4dDJMdGUrOTRCcXp4WXlzcXJHNXZ1RVFGLy9GWjNNRlBuZFdoUFpqWEJUTUtwMFVJSGZtYW01VnBQVjEvCnA1bmtsc2c5N3RLemw0RWFvNnl2MGtHbEljNDBuWVZSNXBzNXloaFFCZVRlYk80dFRFMDFaWVlSRkVVRzNRPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
client-key-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURpakNDQW5LZ0F3SUJBZ0lVTGpjOGF3SUdveFhGay9PMDYzdEM1Q2xOcmZvd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0ZURVRNQkVHQTFVRUF4TUthM1ZpWlhKdVpYUmxjekFlRncweE9UQTNNRGN4TlRReE1EQmFGdzB5T1RBMwpNRFF4TlRReE1EQmFNR2d4Q3pBSkJnTlZCQVlUQWtOT01RNHdEQVlEVlFRSUV3VlhkV2hoYmpFT01Bd0dBMVVFCkJ4TUZWM1ZvWVc0eEREQUtCZ05WQkFvVEEyczRjekVQTUEwR0ExVUVDeE1HVTNsemRHVnRNUm93R0FZRFZRUUQKRXhGemVYTjBaVzA2YTNWaVpTMXdjbTk0ZVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQwpnZ0VCQUw4UmRmU2s0aW14a0x1UnV6c3VkdkNMR3pxV3MrU282U1BtblRockFEUWZUSGtLQ3g1YzhlTXE2VFJsCkRZekJwa1VzMkFZR0ViRUhhNEIxRHc3UGw3S0FreXZvdnl2SUFOMUlsMG1SRE9adDh1SjMzb2cvMGFQOU44c0wKNURXemorY1lpTndoOGdGdEpRSlkxTFFBQVVPWUsrN1JTV2ZIVzBYYTNxQ3NsR1dLWGxCK2d4c2RKRGVVSHFXSApoakcyT3BReEpBL3pHMFE3c0ZadlE2L1BaYThhelZ4OTFoNW1YZm5vUjZpSzdES0hNQWVWZTg3WVhhbTBSNTdwCkxzU2dQY1gvOHJSbjVxSWtzeFZvSm16ZlNuQkg4ZFhFbWg0OTNublRteWtZVCtFYUVOVGpzeGlZN2N1MTZvb2QKSHpjcVdrTnNpTmR5b1dsa2xjSm1OZWxpLzZrQ0F3RUFBYU4vTUgwd0RnWURWUjBQQVFIL0JBUURBZ1dnTUIwRwpBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFQWpBQU1CMEdBMVVkCkRnUVdCQlRDTEh1SmxJYUsyWWZ0TFZFOUNrODF0RVhHUHpBZkJnTlZIU01FR0RBV2dCU2t6MmwxZjI4RU82SmsKRnJHZ1labzJqb0FhN1RBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUZqbGl0bFMyTy8xT21HekE4V2gzVXRrbgpST3FmZjYvSE5CTFZZOTFtQkN6aE8vU1FaVXpHR0p6VStOcXFJMFNlL2N4TU8xb28rbnJnUDc1QnBmSEdUM1AvCmRoZy9XRWNiWlorSHpPMHRSWmhJMkQveTNGMjJabmlmWHVkbWxEUndZM1hYV0FmMVZSandvNkJvY3RKL0RoTUYKUGFVNHJ4YTlVaFg3OWxMQ3NYS1pLRVdPbHRMb293Mk94U1NsbFBZOVJUVGx0SkJRc3ErOGZkTlFlQ0VLQ3VoUgp6UEd4dDJMdGUrOTRCcXp4WXlzcXJHNXZ1RVFGLy9GWjNNRlBuZFdoUFpqWEJUTUtwMFVJSGZtYW01VnBQVjEvCnA1bmtsc2c5N3RLemw0RWFvNnl2MGtHbEljNDBuWVZSNXBzNXloaFFCZVRlYk80dFRFMDFaWVlSRkVVRzNRPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
[root@master ~]# kubectl config set-context default \
> --cluster=kubernetes \
> --user=kube-proxy \
> --kubeconfig=/opt/kubernetes/ssl/kube-proxy.kubeconfig
Context "default" created.
[root@master ~]# kubectl config use-context default --kubeconfig=/opt/kubernetes/ssl/kube-proxy.kubeconfig
Switched to context "default".
[root@master ~]# cat /opt/kubernetes/ssl/kube-proxy.kubeconfig
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURIakNDQWdhZ0F3SUJBZ0lVUHFjY20xOFN1L2lkdFVGWmRVMWwrc29qTGdnd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0ZURVRNQkVHQTFVRUF4TUthM1ZpWlhKdVpYUmxjekFlRncweE9UQTJNekF4TlRRMk1EQmFGdzB5TkRBMgpNamd4TlRRMk1EQmFNQlV4RXpBUkJnTlZCQU1UQ210MVltVnlibVYwWlhNd2dnRWlNQTBHQ1NxR1NJYjNEUUVCCkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDWE1HcUU3R2REMFd0RWczcHZmRnNlT2ZBOGNvNUJFQmR5dlRWQjdselkKdGxwR2Y4Zk4yYTVCckRua1VBNzZ0Z3drR0VDOUEvYXRrRysxd29CWDNuZFo2Y2k5cTJZbkk4YzAwdzhFbllWZAo5dG43V1c4eS9sWEtXYzZOUkd2bnRtZityMTNvUStZK3BIS3AwdUFSamh5N2h1VTlsUXc1eEVIajNOck1WeG9pCkJSaGkzTy92aHh5VzllbHhML1RmbENkUTdvbTNRbzNiVnkyak5QekUyYnNXdzdMV29BK20xTUN4K2RxVWN4ZFAKMkM4NVdITGVpQ2hhTnhDWkl3cDA2V1JTZlQwOE10bFpPMTdIK3JwOWVGc2ZDQ1RkaXJ3LzFWMCtDa1J0Szc1MQpWTkxPSkZMdHN3ejFaVVhDdVl2MURlS0sycGZlcDg5NjFyTUFzYXl5VW1GeEFnTUJBQUdqWmpCa01BNEdBMVVkCkR3RUIvd1FFQXdJQkJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUNNQjBHQTFVZERnUVdCQlNrejJsMWYyOEUKTzZKa0ZyR2dZWm8yam9BYTdUQWZCZ05WSFNNRUdEQVdnQlNrejJsMWYyOEVPNkprRnJHZ1labzJqb0FhN1RBTgpCZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFHdmxaRzc1anpmRm5qNFpMQ0pCQVVxWFJPc3B0eXRIeE84ZUduRTQvClI5QmNETWE5RjV4WnJpeTVhekRBN3hBT0laTm1nQWIzK2hsYWhLd1NTMFUvelZBRCt2QkN3QU5UeVgzYVl4Zm4KaXJDS0cyS092SGtDNU5sMEJBWWU1eGZyTkZjTkx5NDZJTGVXYklMZ0tyMUQ4MFE4NWhmelFDQ09INUI3bE1XcwoyeHZCZ3V3cXV6RTJQMTdYTjdvU2kvNlJsUUtSbmxJRjJNM0pXdk11djI3YjN1K2Iyc3JNaWs5TTNoeDJ2UHRECnN6U0xoQ2VrbzVzbDVhcHRXd3hYN05STk5SL1A4TWI3V0Z6SEJ5RmwwMjliSVlGMkl5N3BpNVE0L1N2M0l0YzQKT3R2NXp3SmEvWEhPckZad2tMU1h4SmVKNlpGRGhITW5HTldOdkF4L0NZTXdJdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
server: https://192.168.238.130:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kube-proxy
name: default
current-context: default
kind: Config
preferences: {}
users:
- name: kube-proxy
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURpakNDQW5LZ0F3SUJBZ0lVTGpjOGF3SUdveFhGay9PMDYzdEM1Q2xOcmZvd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0ZURVRNQkVHQTFVRUF4TUthM1ZpWlhKdVpYUmxjekFlRncweE9UQTNNRGN4TlRReE1EQmFGdzB5T1RBMwpNRFF4TlRReE1EQmFNR2d4Q3pBSkJnTlZCQVlUQWtOT01RNHdEQVlEVlFRSUV3VlhkV2hoYmpFT01Bd0dBMVVFCkJ4TUZWM1ZvWVc0eEREQUtCZ05WQkFvVEEyczRjekVQTUEwR0ExVUVDeE1HVTNsemRHVnRNUm93R0FZRFZRUUQKRXhGemVYTjBaVzA2YTNWaVpTMXdjbTk0ZVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQwpnZ0VCQUw4UmRmU2s0aW14a0x1UnV6c3VkdkNMR3pxV3MrU282U1BtblRockFEUWZUSGtLQ3g1YzhlTXE2VFJsCkRZekJwa1VzMkFZR0ViRUhhNEIxRHc3UGw3S0FreXZvdnl2SUFOMUlsMG1SRE9adDh1SjMzb2cvMGFQOU44c0wKNURXemorY1lpTndoOGdGdEpRSlkxTFFBQVVPWUsrN1JTV2ZIVzBYYTNxQ3NsR1dLWGxCK2d4c2RKRGVVSHFXSApoakcyT3BReEpBL3pHMFE3c0ZadlE2L1BaYThhelZ4OTFoNW1YZm5vUjZpSzdES0hNQWVWZTg3WVhhbTBSNTdwCkxzU2dQY1gvOHJSbjVxSWtzeFZvSm16ZlNuQkg4ZFhFbWg0OTNublRteWtZVCtFYUVOVGpzeGlZN2N1MTZvb2QKSHpjcVdrTnNpTmR5b1dsa2xjSm1OZWxpLzZrQ0F3RUFBYU4vTUgwd0RnWURWUjBQQVFIL0JBUURBZ1dnTUIwRwpBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFQWpBQU1CMEdBMVVkCkRnUVdCQlRDTEh1SmxJYUsyWWZ0TFZFOUNrODF0RVhHUHpBZkJnTlZIU01FR0RBV2dCU2t6MmwxZjI4RU82SmsKRnJHZ1labzJqb0FhN1RBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUZqbGl0bFMyTy8xT21HekE4V2gzVXRrbgpST3FmZjYvSE5CTFZZOTFtQkN6aE8vU1FaVXpHR0p6VStOcXFJMFNlL2N4TU8xb28rbnJnUDc1QnBmSEdUM1AvCmRoZy9XRWNiWlorSHpPMHRSWmhJMkQveTNGMjJabmlmWHVkbWxEUndZM1hYV0FmMVZSandvNkJvY3RKL0RoTUYKUGFVNHJ4YTlVaFg3OWxMQ3NYS1pLRVdPbHRMb293Mk94U1NsbFBZOVJUVGx0SkJRc3ErOGZkTlFlQ0VLQ3VoUgp6UEd4dDJMdGUrOTRCcXp4WXlzcXJHNXZ1RVFGLy9GWjNNRlBuZFdoUFpqWEJUTUtwMFVJSGZtYW01VnBQVjEvCnA1bmtsc2c5N3RLemw0RWFvNnl2MGtHbEljNDBuWVZSNXBzNXloaFFCZVRlYk80dFRFMDFaWVlSRkVVRzNRPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
client-key-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURpakNDQW5LZ0F3SUJBZ0lVTGpjOGF3SUdveFhGay9PMDYzdEM1Q2xOcmZvd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0ZURVRNQkVHQTFVRUF4TUthM1ZpWlhKdVpYUmxjekFlRncweE9UQTNNRGN4TlRReE1EQmFGdzB5T1RBMwpNRFF4TlRReE1EQmFNR2d4Q3pBSkJnTlZCQVlUQWtOT01RNHdEQVlEVlFRSUV3VlhkV2hoYmpFT01Bd0dBMVVFCkJ4TUZWM1ZvWVc0eEREQUtCZ05WQkFvVEEyczRjekVQTUEwR0ExVUVDeE1HVTNsemRHVnRNUm93R0FZRFZRUUQKRXhGemVYTjBaVzA2YTNWaVpTMXdjbTk0ZVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQwpnZ0VCQUw4UmRmU2s0aW14a0x1UnV6c3VkdkNMR3pxV3MrU282U1BtblRockFEUWZUSGtLQ3g1YzhlTXE2VFJsCkRZekJwa1VzMkFZR0ViRUhhNEIxRHc3UGw3S0FreXZvdnl2SUFOMUlsMG1SRE9adDh1SjMzb2cvMGFQOU44c0wKNURXemorY1lpTndoOGdGdEpRSlkxTFFBQVVPWUsrN1JTV2ZIVzBYYTNxQ3NsR1dLWGxCK2d4c2RKRGVVSHFXSApoakcyT3BReEpBL3pHMFE3c0ZadlE2L1BaYThhelZ4OTFoNW1YZm5vUjZpSzdES0hNQWVWZTg3WVhhbTBSNTdwCkxzU2dQY1gvOHJSbjVxSWtzeFZvSm16ZlNuQkg4ZFhFbWg0OTNublRteWtZVCtFYUVOVGpzeGlZN2N1MTZvb2QKSHpjcVdrTnNpTmR5b1dsa2xjSm1OZWxpLzZrQ0F3RUFBYU4vTUgwd0RnWURWUjBQQVFIL0JBUURBZ1dnTUIwRwpBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFQWpBQU1CMEdBMVVkCkRnUVdCQlRDTEh1SmxJYUsyWWZ0TFZFOUNrODF0RVhHUHpBZkJnTlZIU01FR0RBV2dCU2t6MmwxZjI4RU82SmsKRnJHZ1labzJqb0FhN1RBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUZqbGl0bFMyTy8xT21HekE4V2gzVXRrbgpST3FmZjYvSE5CTFZZOTFtQkN6aE8vU1FaVXpHR0p6VStOcXFJMFNlL2N4TU8xb28rbnJnUDc1QnBmSEdUM1AvCmRoZy9XRWNiWlorSHpPMHRSWmhJMkQveTNGMjJabmlmWHVkbWxEUndZM1hYV0FmMVZSandvNkJvY3RKL0RoTUYKUGFVNHJ4YTlVaFg3OWxMQ3NYS1pLRVdPbHRMb293Mk94U1NsbFBZOVJUVGx0SkJRc3ErOGZkTlFlQ0VLQ3VoUgp6UEd4dDJMdGUrOTRCcXp4WXlzcXJHNXZ1RVFGLy9GWjNNRlBuZFdoUFpqWEJUTUtwMFVJSGZtYW01VnBQVjEvCnA1bmtsc2c5N3RLemw0RWFvNnl2MGtHbEljNDBuWVZSNXBzNXloaFFCZVRlYk80dFRFMDFaWVlSRkVVRzNRPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=

kubernetes容器集群管理创建node节点kubeconfig文件的更多相关文章

  1. Kubernetes容器集群管理环境 - Node节点的移除与加入

    一.如何从Kubernetes集群中移除Node比如从集群中移除k8s-node03这个Node节点,做法如下: 1)先在master节点查看Node情况 [root@k8s-master01 ~]# ...

  2. kubernetes容器集群管理部署node节点组件

    发送配置文件到各个节点 [root@master ~]# scp /opt/kubernetes/cfg/*kubeconfig root@192.168.238.128:/opt/kubernete ...

  3. kubernetes容器集群管理部署master节点组件

    集群部署获取k8s二进制包 [root@master ~]# wget https://dl.k8s.io/v1.15.0/kubernetes-server-linux-amd64.tar.gz [ ...

  4. Kubernetes容器集群管理环境 - Prometheus监控篇

    一.Prometheus介绍之前已经详细介绍了Kubernetes集群部署篇,今天这里重点说下Kubernetes监控方案-Prometheus+Grafana.Prometheus(普罗米修斯)是一 ...

  5. Kubernetes容器集群管理环境 - 完整部署(中篇)

    接着Kubernetes容器集群管理环境 - 完整部署(上篇)继续往下部署: 八.部署master节点master节点的kube-apiserver.kube-scheduler 和 kube-con ...

  6. Kubernetes容器集群管理环境 - 完整部署(下篇)

    在前一篇文章中详细介绍了Kubernetes容器集群管理环境 - 完整部署(中篇),这里继续记录下Kubernetes集群插件等部署过程: 十一.Kubernetes集群插件 插件是Kubernete ...

  7. Kubernetes容器集群管理环境 - 完整部署(上篇)

    Kubernetes(通常称为"K8S")是Google开源的容器集群管理系统.其设计目标是在主机集群之间提供一个能够自动化部署.可拓展.应用容器可运营的平台.Kubernetes ...

  8. kubernetes容器集群管理启动一个测试示例

    创建nginx 创建3个nginx副本 [root@master bin]# kubectl run nginx --image=nginx --replicas=3 kubectl run --ge ...

  9. kubernetes容器集群自签TLS证书

    集群部署 1.环境规划 2.安装docker 3.自签TLS证书 4.部署Flannel网络 5.部署Etcd集群 6.创建Node节点kubeconfig文件 7.获取K8S二进制包 8.运行Mas ...

随机推荐

  1. Nginx学习总结:常用module(二)

    斜体下划线,表示建议采用默认配置,无需显式的配置 一.ngx_core_module 1.accept_mutex [on | off]         上下文:events 默认为“on”,在wor ...

  2. Git 协作:Fetch Pull Push Branch Remote Rebase Cherry-pick相关

    前言 学习git的时候,我们首先学习的是最常用的,自己独立开发Software时用的命令: git init //初始化git仓库 git add <file_name> //将文件添加到 ...

  3. java 接口默认方法的使用

  4. k8s-calico【转载】

    环境 系统:centos7.3192.168.40.50 local-master192.168.40.51 local-node1192.168.40.52 local-node2 master: ...

  5. hive之压缩

    对数据进行压缩可以节约磁盘空间,提高系统吞吐量和性能,但是压缩和解压缩会增加CPU的开销. 1.hive的压缩编/解码器 BZip2和GZip压缩率高,但是需要消耗较多的CPU开销.LZO和Snapp ...

  6. python之 matplotlib模块之绘制堆叠柱状图

    我们先来看一个结果图 看到这个图,我个人的思路是 1 设置标题 import numpy as np import matplotlib.pyplot as plt plt.title('Scores ...

  7. 向指定URL 发送POST请求的方法

    java发送psot请求: package com.tea.web.admin; import java.io.BufferedReader; import java.io.IOException; ...

  8. oracle中日期转换

    oracle中,日期转换函数有很多,常用命令如下: to_char()命令将时间戳转换为用户规定的日期格式,如: SELECT TO_CHAR(sysdate,'YYYY-MM-DD hh24:mi: ...

  9. [CSP-S模拟测试]:marshland(最大费用可行流)

    题目描述 前方有一片沼泽地.方便地,我们用一个$n\times n$的网格图来描述它,每一个格子代表着沼泽地的一小片区域.其中$(1,1)$代表网格图的左上角,$(n,n)$代表网格图的右下角.若用$ ...

  10. 【Java架构:持续交付】一篇文章搞掂:持续交付理论

    一.持续集成.持续交付.DevOps概念,关系等 持续集成(Continuous integration/CI) 持续交付(Continuous delivery/CD) 持续部署() 持续 (Con ...