首页 > 其他 > 详细

Centos7部署k8s 实现过程

时间:2019-10-25 15:55:41      阅读:141      评论:0      收藏:0      [点我收藏+]

搞了,两三天才算部署成功,看了很多人的文章,本身对这些东西也不懂,就是搭建起来看看是个啥玩意,想用的时候怎么用。

 

在自己的笔记本上搭建了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

  

启动kubelet   启动kubelet并设置开机启动

 

systemctl enable kubelet && systemctl start kubelet

  

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

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

  

Node节点安装

版本查看

yum list kubelet --showduplicates | sort -r 

安装kubelet、kubeadm和kubectl

yum install -y kubelet-1.14.2 kubeadm-1.14.2 kubectl-1.14.2

  

启动kubelet   启动kubelet并设置开机启动

 

systemctl enable kubelet && systemctl start kubelet

  

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节点加入集群

在node节点上分别执行如下操作:

kubeadm join 192.168.160.130:6443 --token z87rtz.aeo6yb0q5vql4jfz --discovery-token-ca-cert-hash sha256:6a9b7fd28121101bf041785d57b8ebd3ee7cf985615d14c5b36c7aff83ec6f50

  

Dashboard安装

下载yaml

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  地址我用的这个

  

配置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

 

部署访问

部署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

Centos7部署k8s 实现过程

原文:https://www.cnblogs.com/zxcnn/p/11732630.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!