Kubernetes 安裝

環境:

CentOS 7

創建3臺虛機

Master:192.168.1.106

Node1:192.168.1.109

Node2:192.168.1.104

ssh root/Calong@2015

 

準備:所有虛機都要執行

禁用防火牆

systemctl stop firewalld.service && systemctl disable firewalld.service

 

禁用SELinux

setenforce 0

sed -i.bak 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

 

刪除swap

# 1.8版本需要關掉swap,否則kubeadm init時報錯

swapoff -a

vi /etc/fstab

# 註釋掉帶swap的行(如果有)

# 例如:/home/swap swap swap default 0 0

 

設置代理

export http_proxy=costproxy.fit2cloud.com:3108

export https_proxy=costproxy.fit2cloud.com:3108

export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com,example.com,192.168.1.104,192.168.1.106,192.168.1.109"

 

配置yum源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=1

repo_gpgcheck=1

gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

EOF

 

設置內核參數

# 創建文件/etc/sysctl.d/k8s.conf

mkdir -p /etc/sysctl.d

vim /etc/sysctl.d/k8s.conf

# 添加如下內容:

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

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

vm.swappiness=0

# 保存後執行

sysctl -p /etc/sysctl.d/k8s.conf

 

安裝docker,kubelet,kubeadm等

yum install -y docker kubelet kubeadm kubectl kubernetes-cni

# 下載會持續一會

# 啓動docker kubelet

systemctl enable docker && systemctl start docker

systemctl enable kubelet && systemctl start kubelet

初始化Master

設置Docker代理

mkdir -p /etc/systemd/system/docker.service.d

# 創建http-proxy.conf

vim /etc/systemd/system/docker.service.d/http-proxy.conf

# 添加

[Service]

Environment="HTTP_PROXY=costproxy.fit2cloud.com:3108" "HTTPS_PROXY=costproxy.fit2cloud.com:3108"

# 重啓docker

systemctl daemon-reload

systemctl restart docker

 

kubeadm init

# 因爲在該集羣中將使用flannel搭建pod網絡,因此必須添加-pod-network-cidr參數

kubeadm init --pod-network-cidr=10.244.0.0/16

# 中間如果出錯,則先執行kubeadm reset,然後再重現執行kubeadm init ......

# 注意:初始化較慢,因爲該過程會pull一些docker image,如果安裝成功出現如下內容:

Your Kubernetes master has initialized successfully!

 

To start using your cluster, you need to run (as a regular user):

 

  mkdir -p $HOME/.kube

  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

  sudo chown $(id -u):$(id -g) $HOME/.kube/config

 

You should now deploy a pod network to the cluster.

Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:

  http://kubernetes.io/docs/admin/addons/

 

You can now join any number of machines by running the following on each node

as root:

 

  kubeadm join --token d6beff.5c381799e927945b 192.168.1.106:6443 --discovery-token-ca-cert-hash sha256:acffca7d36b741719ec25fe29bd3bfc4061f03c30e720f765037bb9c0bb16daa 這行一會在2個Node虛機上執行

 

 

# 如果太慢,可以手動下載

 

安裝繼續

# 初始化結束後,按照提示執行:

# 如果非root用戶,執行如下:

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

# root用戶,執行如下:

export KUBECONFIG=/etc/kubernetes/admin.conf

安裝flannel

mkdir -p ~/k8s/

cd ~/k8s/

wget https://raw.githubusercontent.com/coreos/flannel/v0.9.0/Documentation/kube-flannel.yml

# 如果虛機有多個網卡的話,參考flannel issues 39701,目前需要在kube-flannel.yml中使用--iface參數指定集羣主機內網網卡的名稱,否則可能會出現dns無法解析。需要將kube-flannel.yml下載到本地,flanneld啓動參數加上--iface=<iface-name>

vim kube-flannel.yml

# containers -> command裏添加"--iface=eth1"

......

apiVersion: extensions/v1beta1

kind: DaemonSet

metadata:

  name: kube-flannel-ds

......

containers:

      - name: kube-flannel

        image: quay.io/coreos/flannel:v0.9.0-amd64

        command: [ "/opt/bin/flanneld""--ip-masq""--kube-subnet-mgr""--iface=eth1" ]

......

# 應用kube-flannel.yml

kubectl apply -f kube-flannel.yml

# 成功提示

clusterrole "flannel" created

clusterrolebinding "flannel" created

serviceaccount "flannel" created

configmap "kube-flannel-cfg" created

daemonset "kube-flannel-ds" created

# 注意:kube-flannel.yml這個文件中已經包含了ServiceAccount, ClusterRole和ClusterRoleBinding,原來是在一個單獨的kube-flannel-rbac.yml文件中。kube-flannel.yml這個文件裏的flannel的鏡像是0.9.0,quay.io/coreos/flannel:v0.9.0-amd64

向Kubernetes集羣添加Node

kubeadm join

# 分別登錄2個Node虛機,將Master上使用kubeadm init成功時顯示的kubeadm join --token ......拷貝到Node上執行

kubeadm join --token d6beff.5c381799e927945b 192.168.1.106:6443 --discovery-token-ca-cert-hash sha256:acffca7d36b741719ec25fe29bd3bfc4061f03c30e720f765037bb9c0bb16daa

# 執行後提示

Node join complete:

* Certificate signing request sent to master and response

  received.

* Kubelet informed of new secure connection details.

 

Run 'kubectl get nodes' on the master to see this machine join.

# 根據提示可以登錄到Master上執行kubectl get nodes,顯示Node的狀態,如下:

NAME         STATUS    ROLES     AGE       VERSION

k8s-master   Ready     master    6h        v1.8.3

k8s-node1    Ready     <none>    4h        v1.8.3

k8s-node2    Ready     <none>    2h        v1.8.3

2個Node虛機都添加完,就完成了Kubernetes安裝,中間如果出現問題,可以查看一下Troubleshooting,或者查看官網https://kubernetes.io

參考:https://www.kubernetes.org.cn/2906.htmlhttp://blog.csdn.net/u012066426/article/details/72627305

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章