时间记录:2019-7-2
Kubernetes(K8s) 是一个开源系统,用于自动化容器化应用程序的部署,扩展和管理。
该安装正对于v1.15.0,其余版本可能会出现问题
官方文档
笔者安装部署遇到了一些问题在这里记录下。
安装参考
安装环境准备:
虚拟机三台:192.168.141.129、192.168.141.130、192.168.131
系统:centos7,每个处理器分配至少2个
设置主机名
hostnamectl set-hostname master/node1/node2
对应着三台机器的主机名
编辑host文件,添加
vi /etc/hosts
------------------------------------------------------------------------------------------------------------------------------
10.10.10.10 master
10.10.10.11 node1
10.10.10.12 node2
关闭防火墙、selinux和swap
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
配置内核参数,将桥接的IPv4流量传递到iptables的链
添加 /etc/sysctl.d/k8s.conf 内容如下
------------------------------------------------------------------------------------------------------------------------------
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
配置国内yum源
yum install -y wget
mkdir /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo
yum clean all && yum makecache
配置国内Kubernetes源
添加 /etc/yum.repos.d/kubernetes.repo
------------------------------------------------------------------------------------------------------------------------------
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
配置 docker 源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
安装docker、kubeadm、kubelet、kubectl
yum install -y docker-ce-18.06.1.ce-3.el7
systemctl enable docker
systemctl start docker
yum install -y kubelet-1.15.0-0 kubeadm-1.15.0-0 kubectl-1.15.0
systemctl enable kubelet
部署master 节点
在master进行Kubernetes集群初始化
kubeadm init --kubernetes-version=1.15.0 \
--apiserver-advertise-address=192.168.141.129 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
记录如下的内容,后续使用
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
kubeadm join 192.168.141.129:6443 --token i9dxt3.39y7sefjhsf83hnj \
--discovery-token-ca-cert-hash sha256:a7c807d699a3f3895f959f8d5c393a6ab6e9ce70ed3713d8d491f0007c7a555d
配置kubectl工具
mkdir -p /root/.kube
cp /etc/kubernetes/admin.conf /root/.kube/config
kubectl get nodes
kubectl get cs
部署flannel网络
kubectl apply -f /home/kube-flannel.yml
注意:这里我访问不了,故将文件放置到本地然后指定路径。(安装参考中的路径)
部署node节点
所有node节点加入Kubernetes集群
kubeadm join 192.168.141.129:6443 --token i9dxt3.39y7sefjhsf83hnj
--discovery-token-ca-cert-hash sha256:a7c807d699a3f3895f959f8d5c393a6ab6e9ce70ed3713d8d491f0007c7a555d
完成以上即完成了所有的部署
部署Dashboard
创建Dashboard的yaml文件
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
修改内容
sed -i 's/k8s.gcr.io/loveone/g' kubernetes-dashboard.yaml
sed -i '/targetPort:/a\ \ \ \ \ \ nodePort: 30001\n\ \ type: NodePort' kubernetes-dashboard.yaml
注意这里使用的yaml可以在发布版的src/… 目录下找到修改镜像位置为
registry.cn-shanghai.aliyuncs.com/zqt/dashboard:1.10.0
在112行左右
这里的镜像可以自行到阿里云上查找,找到需要的镜像后,复制 镜像的地址:版本号即可
部署Dashboard
kubectl create -f kubernetes-dashboard.yaml
查看访问Dashboard的认证令牌
kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
浏览器输入Dashboard访问地址:https://192.168.141.129:30001
注意这里在chrom中会访问不了,修改证书
mkdir key && cd key
#生成证书
openssl genrsa -out dashboard.key 2048
openssl req -new -out dashboard.csr -key dashboard.key -subj '/CN=192.168.246.200'
openssl x509 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt
#删除原有的证书secret
kubectl delete secret kubernetes-dashboard-certs -n kube-system
#创建新的证书secret
kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.key --from-file=dashboard.crt -n kube-system
#查看pod
kubectl get pod -n kube-system
#重启pod
kubectl delete pod <pod name> -n kube-system
总结:主要是源的问题,大部分的源都需要自行指定
时间记录:2019-7-2