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!

##우리는 테스트 dns도 설치를 완성할 수 있는 것을 보았다. 도대체 현기가 어디에 있는지, 바로 dns 플러그인으로 구성된 결과이다. 후속적으로 우리는 다시 한 번 진일보한 해석을 할 시간이 있다. 오늘은kubernetes 설치가 먼저 여기에 도착한다.

좋은 웹페이지 즐겨찾기