kubernetes 1.6.2 배포
운영체제 버전:centos 7.2
1. 시스템 구성 수정:
[root@node1~]# cat /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables= 1
net.bridge.bridge-nf-call-iptables= 1
2. 구성이 적용됩니다.
sysctl -p/etc/sysctl를 실행합니다.d/k8s.conf는 수정을 적용합니다.
3. 호스트 이름 IP 설정:
[root@node1~]# cat /etc/hosts
10.104.143.65 node1
10.186.54.177 node2
4. kuberete 패키지를 설치하고 패키지를 다운로드한다. 중국은 모두 차단되어 있기 때문에 국민이 관리하는 라이브러리를 사용하고 패키지를 다운로드한다.https://yum.mritd.me/
# yum 소스 추가
[root@linux-node1src]#tee /etc/yum.repos.d/mritd.repo <
# cache
[root@linux-node1src]#yummakecache
# yum-utils
[root@linux-node1src]#yuminstall -y yum-utils socat
# rpm
[root@linux-node1src]#yumdownloader kubelet kubectl kubernetes-cni kubeadm
# :
[root@linux-node1src]# ls
kubeadm-1.6.2-0.x86_64.rpm kubectl-1.6.2-0.x86_64.rpm kubelet-1.6.2-0.x86_64.rpm kubernetes-cni-0.5.1-0.x86_64.rpm
5. kubeletes 패키지 설치:
[root@linux-node1src]# yum localinstall kube*.rpm
6. 우리는 먼저 어떤 가방을 다운로드해야 하는지, 관련 버전은 어떤 의존 관계를 필요로 하는지 이해한다. 왜냐하면 국내 가방은 벽에 걸려 있기 때문에 우리는 제3자 클라우드에서 관련 버전을 다운로드한 다음에 설치해야 한다.
Image
Ver
Component
gcr.io/google_containers/kube-proxy-amd64
v1.6.2
Kubernetes
gcr.io/google_containers/kube-controller-manager-amd64
v1.6.2
Kubernetes
gcr.io/google_containers/kube-apiserver-amd64
v1.6.2
Kubernetes
gcr.io/google_containers/kube-scheduler-amd64
v1.6.2
Kubernetes
gcr.io/google_containers/etcd-amd64
3.0.17
Kubernetes
gcr.io/google_containers/pause-amd64
3.0
Kubernetes
gcr.io/google_containers/k8s-dns-sidecar-amd64
1.14.1
DNS
gcr.io/google_containers/k8s-dns-kube-dns-amd64
1.14.1
DNS
gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64
1.14.1
DNS
7. 관련 패키지를 다운로드한 다음 tag 이름을 바꾸고 이전 패키지를 삭제합니다.[root@linux-node1src]#p_w_picpaths=(kube-proxy-amd64:v1.6.2kube-controller-manager-amd64:v1.6.2 kube-apiserver-amd64:v1.6.2kube-scheduler-amd64:v1.6.2 k8s-dns-sidecar-amd64:1.14.1k8s-dns-dnsmasq-nanny-amd64:1.14.1)
[root@linux-node1src]#for p_w_picpathName in ${p_w_picpaths[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/kube_containers/$p_w_picpathName
docker tag registry.cn-hangzhou.aliyuncs.com/kube_containers/$p_w_picpathNamegcr.io/google_containers/$p_w_picpathName
docker rmi registry.cn-hangzhou.aliyuncs.com/kube_containers/$p_w_picpathName
done
[root@linux-node1src]#dockerpull registry.cn-hangzhou.aliyuncs.com/google-containers/etcd-amd64:3.0.17
[root@linux-node1src]#docker pullregistry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0
[root@linux-node1src]#docker pullindex.tenxcloud.com/jimmy/k8s-dns-kube-dns-amd64:1.14.1
[root@linux-node1src]#docker tagregistry.cn-hangzhou.aliyuncs.com/google-containers/etcd-amd64:3.0.17gcr.io/google_containers/etcd-amd64:3.0.17
[root@linux-node1src]#docker rmiregistry.cn-hangzhou.aliyuncs.com/google-containers/etcd-amd64:3.0.17
[root@linux-node1src]#dockertag registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0gcr.io/google_containers/pause-amd64:3.0
[root@linux-node1src]#docker rmiregistry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0
[root@linux-node1src]#dockertag index.tenxcloud.com/jimmy/k8s-dns-kube-dns-amd64:1.14.1gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.1
[root@linux-node1src]#dockerrmi index.tenxcloud.com/jimmy/k8s-dns-kube-dns-amd64:1.14.1
8. 클러스터 초기화:[root@node1~]# kubeadm init --kubernetes-version=v1.6.2 --pod-network-cidr=10.244.0.0/16--apiserver-advertise-address=10.104.143.65
........
You cannow join any number of machines by running the following on each node
as root:
kubeadm join --token 50e5cc.8ca639f09da1fb6510.104.143.65:6443
#flannel 네트워크를 사용할 때pod-network-cide를 지정해야 합니다. 그렇지 않으면 뒤에서 일어나지 못합니다.
#token을 제어합니다. 이것은 우리 Node가 집단에 가입한 증거입니다.
9. 오류가 발생하면 그룹을 다시 초기화하고 token-id를 생성합니다. (이 약관을 다시 실행하지 않음)[root@node1~]#kubeadmreset
[root@node1~]#ifconfigcni0 down
[root@node1~]#ip linkdelete cni0
[root@node1~]#ifconfigflannel.1 down
[root@node1~]#ip linkdelete flannel.1
[root@node1~]#rm -rf/var/lib/cni/
10, 버전 1.6.2 이후에 감청된 포트는 6443 포트로 이전의 80이 아니기 때문에 보기를 실행하면 오류가 발생합니다.## kubectlget node :
[root@node1manifests]# kubectl get nodes
Theconnection to the server localhost:8080 was refused - did you specify the righthost or port?
## 8080 , kube-apiserver 6443 :
11. 관련 api-server 파일을 볼 수 있습니다.[root@node1manifests]# cat kube-apiserver.yaml
apiVersion:v1
。。。。。。
p_w_picpath:gcr.io/google_containers/kube-apiserver-amd64:v1.6.2
livenessProbe:
failureThreshold: 8
httpGet:
host: 127.0.0.1
path: /healthz
port: 6443
scheme: HTTPS
initialDelaySeconds: 15
timeoutSeconds: 15
### :
[root@node1manifests]# netstat -ntlp | grep api
tcp6 0 0:::6443 :::* LISTEN 64692/kube-apiserve
12. 환경 변수를 설정합니다.[root@node1~]# vim /etc/profile
exportKUBECONFIG=/etc/kubernetes/admin.conf
[root@node1~]# source /etc/profile
13. 관련 pod 상태 보기:[root@node1src]# kubectl get pod --all-namespaces-o wide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE
kube-system etcd-node1 1/1 Running 0 4m 10.104.143.65 node1
kube-system kube-apiserver-node1 1/1 Running 0 4m 10.104.143.65 node1
kube-system kube-controller-manager-node1 1/1 Running 0 4m 10.104.143.65 node1
kube-system kube-dns-3913472980-zkqk1 0/3 Pending 0 3m
kube-system kube-proxy-tckxj 1/1 Running 0 3m 10.104.143.65 node1
kube-system kube-scheduler-node1 1/1 Running 0 4m 10.104.143.65 node1
### kube-dns , , 。
14. 클러스터 노드의 상태를 확인합니다.[root@node1src]# kubectl get nodes
NAME STATUS AGE VERSION
node1 NotReady 3m v1.6.2
15. 다음에 우리는 네트워크를 설정하고 flannl 네트워크 파일을 다운로드한 다음에 설정합니다.[root@node1 src]#wgethttps://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml
[root@node1 src]#wgethttps://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
## 그런 다음 관련 파일을 수정하고 자체 네트워크 카드를 추가하면 여러 네트워크 카드가 자주 네트워크에서 작동하지 않습니다.[root@node1 src]# vim kube-flannel.yml
### "--iface=eth0”
command: [ "/opt/bin/flanneld","--ip-masq", "--kube-subnet-mgr", "--iface=eth0"]
16. 빠른 시작을 위해 우리는 사전에 flannel의 거울을 다운로드할 수 있다.[root@node1 ~]# docker pullregistry.cn-hangzhou.aliyuncs.com/omega-reg/flannel:v0.7.1-amd64
[root@node1 ~]# docker tagregistry.cn-hangzhou.aliyuncs.com/omega-reg/flannel:v0.7.1-amd64quay.io/coreos/flannel:v0.7.1-amd64
17, 다음 flannel 네트워크를 시작합니다.[root@node1 src]# kubectl create -fkube-flannel-rbac.yml
clusterrole "flannel" created
clusterrolebinding "flannel"created
[root@node1 src]# kubectl apply -fkube-flannel.yml
serviceaccount "flannel" created
configmap "kube-flannel-cfg"created
daemonset "kube-flannel-ds" created
18. 그리고 Pod 관련 상태를 살펴보자.[root@node1 src]# kubectl get pod -o wide -nkube-system
NAME READY STATUS RESTARTS AGE IP NODE
etcd-node1 1/1 Running 0 10m 10.104.143.65 node1
kube-apiserver-node1 1/1 Running 0 10m 10.104.143.65 node1
kube-controller-manager-node1 1/1 Running 0 10m 10.104.143.65 node1
kube-dns-3913472980-zkqk1 3/3 Running 0 10m 10.244.0.2 node1
kube-flannel-ds-xjckw 2/2 Running 0 51s 10.104.143.65 node1
kube-proxy-tckxj 1/1 Running 0 10m 10.104.143.65 node1
kube-scheduler-node1 1/1 Running 0 10m 10.104.143.65 node1
19, 다음에 우리는 node2를 집단에 가입한다.[root@node2 ~]# kubeadm join --token 50e5cc.8ca639f09da1fb6510.104.143.65:6443
[kubeadm] WARNING: kubeadm is in beta, pleasedo not use it for production clusters.
[preflight] Running pre-flight checks
。。。。。
20, Node1에서 보기:[root@node1src]# kubectl get nodes
NAME STATUS AGE VERSION
node1 Ready 26m v1.6.2
node2 Ready 2m v1.6.2
21. DNS 해석 구성 요소가 정상인지 테스트할 수 있습니다. 이것은 뒤에 있는dashboard에 영향을 미칠 수 있기 때문입니다.[root@node1 src]# kubectl run curl--p_w_picpath=radial/busyboxplus:curl -i --tty
If you don't see a command prompt, trypressing enter.
[ root@curl-57077659-f4wgb:/ ]$ nslookupkubernetes.default
Server: 10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
Name: kubernetes.default
Address 1: 10.96.0.1kubernetes.default.svc.cluster.local
[ root@curl-57077659-f4wgb:/ ]$ nslookupkube-dns.kube-system
Server: 10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
Name: kube-dns.kube-system
Address 1: 10.96.0.10kube-dns.kube-system.svc.cluster.local
22. 정상적인 후에 우리는pod를 작성하여 운행 상황을 테스트한다.[root@node1src]# cat my-nginx.yaml
apiVersion:extensions/v1beta1
kind:Deployment
metadata:
name: my-nginx
spec:
replicas: 2
template:
metadata:
labels:
run: my-nginx
spec:
containers:
- name: my-nginx
p_w_picpath: nginx
ports:
- containerPort: 80
### 대외 방문 시 관련 포트 접근을 제공해야 하기 때문에 서비스를 작성해야 합니다.[root@node1src]# cat nginx-srv.yaml
apiVersion:v1
kind:Service
metadata:
name: my-nginx
labels:
run: my-nginx
spec:
type: NodePort
ports:
- port: 80
nodePort: 30062
protocol: TCP
selector:
run: my-nginx
23, 정상 작동, 액세스 여부를 테스트할 수 있습니다:[root@node1src]# kubectl create -f my-nginx.yaml
deployment"my-nginx" created
[root@node1src]# kubectl create -f nginx-srv.yaml
service"my-nginx" created
## pod :
[root@node1src]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE
curl-57077659-f4wgb 1/1 Running 1 19m 10.244.0.3 node1
my-nginx-858393261-2f2cq 1/1 Running 0 41s 10.244.0.4 node1
my-nginx-858393261-frdtg 1/1 Running 0 41s 10.244.1.2 node2
## 관련 서비스 보기[root@node1src]# kubectl get service
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.96.0.1 443/TCP 37m
my-nginx 10.110.89.147 80:30062/TCP 1m
24, 다음은 정상 여부를 테스트하는 것입니다.[root@node1src]# curl 10.110.89.147
Welcometo nginx!
.......
## NODE IP:30062 :
[root@node1src]# curl node1:30062
Welcometo nginx!
[root@node1src]# curl node2:30062
Welcometo nginx!
25, ## 그리고 우리는 용기 간의 상호 연결성을 테스트할 수 있다.[root@node1src]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE
curl-57077659-f4wgb 1/1 Running 1 23m 10.244.0.3 node1
my-nginx-858393261-2f2cq 1/1 Running 0 4m 10.244.0.4 node1
my-nginx-858393261-frdtg 1/1 Running 0 4m 10.244.1.2 node2
## 10.244.0.4ping 10.244.1.2:
[root@node1src]# kubectl exec my-nginx-858393261-2f2cq ping 10.244.1.2
PING10.244.1.2 (10.244.1.2): 56 data bytes
64 bytesfrom 10.244.1.2: icmp_seq=0 ttl=62 time=5.018 ms
## 。
26. 다음에 dns 해석에 문제가 있는지 테스트해 보겠습니다. 우리는curl 노드가 있기 때문에 직접curl 테스트를 사용합니다. dns 내부 테스트가 있으면 서비스 정의에 따라 접근할 수 있습니다.[root@node1src]# kubectl get service
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.96.0.1 443/TCP 57m
my-nginx 10.110.89.147 80:30062/TCP 21m
[root@node1src]# kubectl exec curl-57077659-f4wgb curl my-nginx
% Total % Received % Xferd AverageSpeed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0html>
Welcometo nginx!
##우리는 테스트 dns도 설치를 완성할 수 있는 것을 보았다. 도대체 현기가 어디에 있는지, 바로 dns 플러그인으로 구성된 결과이다. 후속적으로 우리는 다시 한 번 진일보한 해석을 할 시간이 있다. 오늘은kubernetes 설치가 먼저 여기에 도착한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
첫 번째 Docker for Mac참고 , 나는 옆에 있는 Mac에 Docker를 설치하고 컨테이너를 세워 보고 싶다. Docker Hub를 처음 사용할 때는 계정을 만들어야 합니다. Docker.dmg을 실행하면 Docker가 설치됩니다. Dock...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.