kubeadm安裝Kubernetes-1.6.1集羣

Installing Kubernetes on Linux with kubeadmnode

-----------------------------------------------------------linux

  • 系統環境:

# cat /etc/centos-release
CentOS Linux release 7.3.1611 (Core)git

  • 關閉防火牆、selinux:

# systemctl disable firewalld
# systemctl stop firewalld

# cat /etc/sysconfig/selinux
……
SELINUX=disabled
……
  • 添加yum源:

# cat /etc/yum.repos.d/kubernetes.repo 
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0


# yum install -y yum-utils

# yum-config-manager \
    --add-repo \
    https://docs.docker.com/v1.13/engine/installation/linux/repo_files/centos/docker.repo

# yum makecache fast

 

  • 查看版本:

# yum list docker-engine.x86_64  --showduplicates |sort -r
docker-engine.x86_64             1.13.1-1.el7.centos                 docker-main
docker-engine.x86_64             1.12.6-1.el7.centos                 docker-main
docker-engine.x86_64             1.11.2-1.el7.centos                 docker-main

# yum list kubeadm  --showduplicates |sort -r
kubeadm.x86_64                        1.6.1-0                        kubernetes
kubeadm.x86_64                        1.6.0-0                        kubernetes

# yum list kubelet  --showduplicates |sort -r
kubelet.x86_64                        1.6.1-0                        kubernetes
kubelet.x86_64                        1.6.0-0                        kubernetes
kubelet.x86_64                        1.5.4-0                        kubernetes

# yum list kubectl  --showduplicates |sort -r
kubectl.x86_64                        1.6.1-0                        kubernetes
kubectl.x86_64                        1.6.0-0                        kubernetes
kubectl.x86_64                        1.5.4-0                        kubernetes

# yum list kubernets-cni  --showduplicates |sort -r
kubernetes-cni              x86_64              0.5.1-0              kubernetes

 

  • 系統配置:

根據官方文檔中的Installing Kubernetes on Linux with kubeadm · Limitations小節中的內容,對各節點系統作以下設置:

建立/etc/sysctl.d/k8s.conf文件,添加以下內容:github

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

執行sysctl -p /etc/sysctl.d/k8s.conf使修改生效。docker

 

  • 安裝軟件包:

# yum -y install docker-engine-1.12.6
# yum -y install socat kubelet-1.6.1 kubeadm-1.6.1 kubectl-1.6.1 kubernetes-cni-0.5.1
# rpm -qa|grep kube
kubectl-1.6.1-0.x86_64
kubelet-1.6.1-0.x86_64
kubernetes-cni-0.5.1-0.x86_64
kubeadm-1.6.1-0.x86_64

 

  • 啓動docker:

 # systemctl enable docker && systemctl start docker

 

  • 下載Kubernetes-1.6.0所需鏡像:

# docker pull quay.io/coreos/flannel:v0.7.1-amd64
# docker pull gcr.io/google_containers/kube-proxy-amd64:v1.6.1
# docker pull gcr.io/google_containers/kube-apiserver-amd64:v1.6.1
# docker pull gcr.io/google_containers/kube-scheduler-amd64:v1.6.1
# docker pull gcr.io/google_containers/kube-controller-manager-amd64:v1.6.1
# docker pull gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.1
# docker pull gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.1
# docker pull gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.1
# docker pull gcr.io/google_containers/etcd-amd64:3.0.17
# docker pull gcr.io/google_containers/pause-amd64:3.0

 

  • 查看鏡像:

# docker images
REPOSITORY                                               TAG                 IMAGE ID            CREATED             SIZE
quay.io/coreos/flannel                                   v0.7.1-amd64        cd4ae0be5e1b        2 weeks ago         77.76 MB
gcr.io/google_containers/kube-proxy-amd64                v1.6.1              ec956fe05f2d        4 weeks ago         109.2 MB
gcr.io/google_containers/kube-apiserver-amd64            v1.6.1              1f685ed29076        4 weeks ago         150.5 MB
gcr.io/google_containers/kube-scheduler-amd64            v1.6.1              acfe393e96ba        4 weeks ago         76.75 MB
gcr.io/google_containers/kube-controller-manager-amd64   v1.6.1              591d6604f79b        4 weeks ago         132.7 MB
gcr.io/google_containers/k8s-dns-sidecar-amd64           1.14.1              fc5e302d8309        9 weeks ago         44.52 MB
gcr.io/google_containers/k8s-dns-kube-dns-amd64          1.14.1              f8363dbf447b        9 weeks ago         52.36 MB
gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64     1.14.1              1091847716ec        9 weeks ago         44.84 MB
gcr.io/google_containers/etcd-amd64                      3.0.17              243830dae7dd        9 weeks ago         168.9 MB
gcr.io/google_containers/pause-amd64                     3.0                 99e59f495ffa        12 months ago       746.9 kB

 

  • 啓動kubelet:

# systemctl enable kubelet
# systemctl start kubelet


 

  • 初始化master機器:

# kubeadm init \
    --apiserver-advertise-address=172.16.20.99 \
    --kubernetes-version=v1.6.1 \
    --pod-network-cidr=10.244.0.0/16

  參數解釋:
 --apiserver-advertise-address # API Server(master)IP地址
 --kubernetes-version # 初始化安裝的Kubernetes版本
 --pod-network-cidr # 選擇flannel做爲Pod的網絡插件,因此指定 10.244.0.0/16
 bootstrap

  • 使用kubectl 管理命令行:

爲了使用kubectl訪問apiserver,在~/.bash_profile中追加下面的環境變量:vim

# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
# source ~/.bash_profile
# kubectl get nodesNAME STATUS AGE VERSIONnode0 NotReady 3m v1.6.1

 

  • 安裝Pod的網絡插件:

# kubectl create -f \
   https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml
# kubectl apply -f \
   https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml \
   serviceaccount "flannel" \
   createdconfigmap "kube-flannel-cfg" \
   createddaemonset "kube-flannel-ds" \
   created

PS:若是Node有多個網卡的話,參考flannel issues 39701,目前須要在kube-flannel.yml 中使用--iface參數指定集羣主機內網網卡的名稱,不然可能會出現dns沒法解析。
須要將kube-flannel.yml下載到本地,flanneld啓動參數加上--iface=<iface-name> 
使用kubectl get pod --all-namespaces -o wide 確保全部的Pod都處於Running狀態。centos

  • 使Master機器參與工做負載:

使用kubeadm初始化的集羣,出於安全考慮Pod不會被調度到Master Node上,也就是說Master Node不參與工做負載。api

這裏搭建的是測試環境能夠使用下面的命令使Master Node參與工做負載:安全

kubectl taint nodes --all node-role.kubernetes.io/master-
  • 測試DNS

創建測試容器:

# vim busybox.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: default
spec:
  containers:
  - image: busybox
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
    name: busybox
  restartPolicy: Always
 
# kubectl create -f busybox.yaml 
pod "busybox" created

進入後執行nslookup kubernetes.default確認解析正常

# kubectl exec -ti busybox -- nslookup kubernetes.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.1 kubernetes.default.svc.cluster.local

測試ok以後,刪掉這個測試pod
# kubectl delete pod busybox
pod "busybox" deleted

 

  • 查看Kubernetes集羣token(小技巧):

# kubeadm token list
TOKEN                     TTL         EXPIRES   USAGES                   DESCRIPTION
22a850.15bb6e6da239c542   <forever>   <never>   authentication,signing   The default bootstrap token generated by 'kubeadm init'.
相關文章
相關標籤/搜索