搞了,两三天才算部署成功,看了很多人的文章,本身对这些东西也不懂,就是搭建起来看看是个啥玩意,想用的时候怎么用。
在自己的笔记本上搭建了3台虚拟机,前期已经准备好了 centos和docker
三台虚拟主机分别为
192.168.160.130
192.168.160.132
192.168.160.133
安装docker
所有节点都需要安装docker
1. 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
2. 设置docker镜像源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.安装docker ce
yum list docker-ce --showduplicates | sort -r #查询ce版本
yum install -y docker-ce docker-ce-cli containerd.io #安装最新版本
4.启动docker
systemctl start docker && systemctl enable docker
5.命令补全
yum -y install bash-completion #安装bash-completion
source /etc/profile.d/bash_completion.sh #加载bash-completion
6 配置镜像加速器
vim /etc/daemon.json { "registry-mirrors": ["https://v16stybc.mirror.aliyuncs.com"], "exec-opts": ["native.cgroupdriver=systemd"] }
7 重新加载daemon
systemctl daemon-reload && systemctl restart docker
新增kubernetes
cat <<EOF > /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 EOF
更新缓存
yum clean all && yum -y makecache
Master节点安装
版本查看
yum list kubelet --showduplicates | sort -r
安装kubelet、kubeadm和kubectl
yum install -y kubelet-1.14.2 kubeadm-1.14.2 kubectl-1.14.2
systemctl enable kubelet && systemctl start kubelet
echo "source <(kubectl completion bash)" >> ~/.bash_profile
source .bash_profile
more image.sh #!/bin/bash url=registry.cn-hangzhou.aliyuncs.com/google_containers version=v1.14.2 images=(`kubeadm config images list --kubernetes-version=$version|awk -F ‘/‘ ‘{print $2}‘`) for imagename in ${images[@]} ; do docker pull $url/$imagename docker tag $url/$imagename k8s.gcr.io/$imagename docker rmi -f $url/$imagename done
apiserver-advertise-address(master主机ip)
pod-network-cidr (docker network inspect bridge)
kubeadm init --apiserver-advertise-address 192.168.160.130 --pod-network-cidr=172.17.0.0/16
apiserver-advertise-address指定master的interface,pod-network-cidr指定Pod网络的范围
初始化成功后执行
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
安装calico(在master节点上操作)
Calico官网:https://docs.projectcalico.org/v3.6/getting-started/kubernetes/
kubectl apply -f https://docs.projectcalico.org/v3.5/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml
版本查看
yum list kubelet --showduplicates | sort -r
安装kubelet、kubeadm和kubectl
yum install -y kubelet-1.14.2 kubeadm-1.14.2 kubectl-1.14.2
systemctl enable kubelet && systemctl start kubelet
echo "source <(kubectl completion bash)" >> ~/.bash_profile
source .bash_profile
more image.sh #!/bin/bash url=registry.cn-hangzhou.aliyuncs.com/google_containers version=v1.14.2 images=(`kubeadm config images list --kubernetes-version=$version|awk -F ‘/‘ ‘{print $2}‘`) for imagename in ${images[@]} ; do docker pull $url/$imagename docker tag $url/$imagename k8s.gcr.io/$imagename docker rmi -f $url/$imagename done
以下操作master上执行
kubeadm token list
kubeadm token create
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed ‘s/^.* //‘
在node节点上分别执行如下操作:
kubeadm join 192.168.160.130:6443 --token z87rtz.aeo6yb0q5vql4jfz --discovery-token-ca-cert-hash sha256:6a9b7fd28121101bf041785d57b8ebd3ee7cf985615d14c5b36c7aff83ec6f50
wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended/kubernetes-dashboard.yaml (404了)
wget http://mirror.faasx.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml 地址我用的这个
sed -i ‘s/k8s.gcr.io/registry.cn-hangzhou.aliyuncs.com\/kuberneters/g‘ kubernetes-dashboard.yaml
由于默认的镜像仓库网络访问不通,故改成阿里镜像
sed -i ‘/targetPort:/a\ \ \ \ \ \ nodePort: 30001\n\ \ type: NodePort‘ kubernetes-dashboard.yaml
配置NodePort,外部通过https://NodeIp:NodePort 访问Dashboard,此时端口为30001
cat >> kubernetes-dashboard.yaml << EOF --- # ------------------- dashboard-admin ------------------- # apiVersion: v1 kind: ServiceAccount metadata: name: dashboard-admin namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: dashboard-admin subjects: - kind: ServiceAccount name: dashboard-admin namespace: kube-system roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin EOF ######这步没有成功 我直接把以下的代码拷贝到文件中了 --- # ------------------- dashboard-admin ------------------- # apiVersion: v1 kind: ServiceAccount metadata: name: dashboard-admin namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: dashboard-admin subjects: - kind: ServiceAccount name: dashboard-admin namespace: kube-system roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin
创建超级管理员的账号用于登录Dashboard
kubectl apply -f kubernetes-dashboard.yaml
kubectl get deployment kubernetes-dashboard -n kube-system
kubectl get pods -n kube-system -o wide
kubectl get services -n kube-system

我遇到了coredns 一直pending的问题所以改用了安装Calico得已解决 没有使用安装pod网络(使用pod一直是pending不知道为什么)
kubectl describe secrets -n kube-system dashboard-admin
生成的令牌访问k8s可视化站点的时候要用
看了很多人的文章都说是访问主机的ip加端口号
但是我的一直访问不到,查询后得到了解决方案
在master部署的dashboard访问的ip地址竟然是node的。。。不明白为什么

安装dashboard 过程还遇到了 ImagePullBackOff
这里查询后是把dashboard image先拉取到本地解决的
搞了两,三天总算搞起来了 个人留存
参考地址:
https://blog.51cto.com/3241766/2405624
https://www.cnblogs.com/ding2016/p/10784620.html
原文:https://www.cnblogs.com/zxcnn/p/11732630.html