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

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