01-kubernetes搭建安装

1、安装前准备

1.1、集群IP分布

主机名IP地址角色备注
kube-master192.168.168.60kube-master管理节点
kube-node1192.168.168.61kube-node计算节点
kube-node2192.168.168.62kube-node计算节点
kube-node3192.168.168.63kube-node计算节点
repo192.168.168.72registryyum安装源,私有仓库

1.2、修改主机名与本地hosts解析,dns(dns略)

[root@h60 ~]# echo kube-master > /etc/hostname 
[root@h61 ~]# echo kube-node1 > /etc/hostname 
[root@h62 ~]# echo kube-node2 > /etc/hostname 
[root@h63 ~]# echo kube-node3 > /etc/hostname 

[root@kube-node3 ~]# cat /etc/hosts
192.168.168.60 kube-master
192.168.168.61 kube-node1
192.168.168.62 kube-node2
192.168.168.63 kube-node3

1.3、从节点安装docker

> # 在node1~3上操作
[root@kube-node3 ~]# yum -y install docker #安装 docker
[root@kube-node3 ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf #开启路由转发
[root@kube-node3 ~]# sysctl -p #让配置立刻生效
[root@kube-node3 ~]# systemctl start docker
[root@kube-node3 ~]# systemctl enable docker
[root@kube-node3 ~]# systemctl stop/disable firewalld
[root@kube-node3 ~]# setenforce 0 

1.4、配置私有仓库harbor

2、配置本地镜像源

2.1、配置本地k8s镜像源

[root@soft72 localrepo]# pwd
/var/www/html/localrepo

[root@soft72 localrepo]# ls
containernetworking-cni-0.6.0-3.el7.x86_64.rpm  kubernetes-kubeadm-1.10.3-0.el7.x86_64.rpm
etcd-3.3.11-2.el7.centos.x86_64.rpm             kubernetes-master-1.10.3-0.el7.x86_64.rpm
flannel-0.7.1-4.el7.x86_64.rpm                  kubernetes-node-1.10.3-0.el7.x86_64.rpm
kubernetes-1.10.3-0.el7.x86_64.rpm              repodata
kubernetes-client-1.10.3-0.el7.x86_64.rpm
]# cat /etc/yum.repos.d/local-k8s.repo 
[my-k8s-repo]
name=my-k8s-repo
baseurl=http://harbor.soft72.com/localrepo
enabled=1
gpgcheck=0

2.2、master与node镜像源如下

[root@kube-master ~]# cat /etc/yum.repos.d/local-k8s.repo 
[my-k8s-repo]
name=my-k8s-repo
baseurl=http://harbor.soft72.com/localrepo
enabled=1
gpgcheck=0

3、安装部署kube-master

3.1、etcd安装配置(master)

  • 安装
[root@kube-master ~]# yum -y install etcd   #安装 etcd(键值型数据库)
  • 改配置
[root@kube-master ~]# vim /etc/etcd/etcd.conf 
6 ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" #修改监听的客户端地址,0.0.0.0 指监听所有的主机
[root@kube-master ~]# systemctl start etcd.service
[root@kube-master ~]# systemctl enable etcd.service 
  • 创建配置网络
在 etcd 中,创建网络,mk 创建键值对 ——> 创建网络(后面课程配置)
[root@kube-master ~]# etcdctl mk /atomic.io/network/config '{"Network":"10.254.0.0/16","Backend":{"Type":"vxlan"}}'
[root@kube-master ~]# etcdctl ls / #查看
[root@kube-master ~]# etcdctl ls /atomic.io
[root@kube-master ~]# etcdctl ls /atomic.io/network
[root@kube-master ~]# etcdctl get /atomic.io/network/config #验证,查看 etcd 中的键值
对,确认网络配置

3.2 flannel安装配置(master+node)

  • 安装
[root@kube-node1 ~]# yum -y install flannel
[root@kube-node1 ~]# vim /etc/sysconfig/flanneld
4 FLANNEL_ETCD_ENDPOINTS="http://192.168.168.60:2379" #指定etcd
>#  etcd 中已定义了 flannel 网络地址:10.254.0.0/16
  • 起服务
启动服务(flannel 服务必须在 docker 服务之前启动)
[root@kube-node1 ~]# systemctl stop docker
[root@kube-node1 ~]# systemctl enable flanneld
[root@kube-node1 ~]# systemctl start flanneld docker
  • 查看
[root@kube-node1 ~]# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 10.254.73.1  netmask 255.255.255.0  broadcast 0.0.0.0
        ...
flannel.1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 10.254.73.0  netmask 255.255.255.255  broadcast 0.0.0.0
  • 测试(node)
node上新开一个容器,各个节点相互ping,测试flannel网络
[root@kube-node1 ~]# docker run -d harbor.soft72.com:8080/public/nginx:latest
[root@kube-node1 ~]# docker inspect -f "{{.NetworkSettings.IPAddress}}" #查看IP

3.3、安装k8s-master

  • 安装
[root@kube-master ~]# yum list kubernetes-* #检查 k8s 的安装软件包,必须是 1.10.3
[root@kube-master ~]# yum -y install kubernetes-master kubernetes-client
[root@kube-master ~]# ls /etc/kubernetes/
apiserver  config  controller-manager  scheduler
  • 修改 k8s 全局配置文件
[root@kube-master ~]# vim /etc/kubernetes/config
22 KUBE_MASTER="--master=http://192.168.168.60:8080" #指定k8s管理节点的IP地址
(指定 apiserver 的地址)
  • 修改 apiserver 配置文件(master 主配置文件)
[root@kube-master ~]# vim /etc/kubernetes/apiserver
8 KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" #监听所有地址
17 KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.168.60:2379"    #指定etcd地址
20 KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" #k8s集群默认IP端
23 KUBE_ADMISSION_CONTROL="--admission-control=Namespace
Lifecycle,LimitRanger,SecurityContextDeny,ResourceQuota" 
> #定义 k8s 的交互和配置行为,删除 ServiceAccount(通讯的一种机制,使用秘钥认证,需要证书认证),在这里是内网通讯
> #不涉及安全性问题,所以本次 k8s 不采用证书认证,使用明文即可
  • controller-manager scheduler 使用默认即可
  • 启动
启动服务,设置三个服务的开机自启动
[root@kube-master ~]# systemctl enable kube-apiserver.service kube-controller-manager.service kube-scheduler.service
[root@kube-master ~]# systemctl start kube-apiserver.service kube-controller-manager.service kube-scheduler.service
[root@kube-master ~]# systemctl status kube-apiserver.service kube-controller-manager.service kube-scheduler.service
  • 验证服务
[root@kube-master ~]# kubectl get cs
NAME                 STATUS    MESSAGE             ERROR
controller-manager   Healthy   ok                  
etcd-0               Healthy   {"health":"true"}   
scheduler            Healthy   ok     

4、安装部署kube-node

4.1、安装 kube-node

  • 安装
[root@kube-node1 ~]# yum -y install kubernetes-node
  • 修改 k8s 全局配置文件
[root@kube-node1 ~]# vim /etc/kubernetes/config
22 KUBE_MASTER="--master=http://192.168.168.60:8080" #指定 k8s 管理节点的 IP 地址
  • 修改kubelet配置文件
[root@kube-node1 ~]# vim /etc/kubernetes/kubelet
>#  #修改 kubelet 监听地址,监听所有的 IP 地址,
> 5 KUBELET_ADDRESS="--address=0.0.0.0"
># master 在创建容器的时候需要和 kubelet 通讯,需要 IP
># 指定本机的主机名,master发现有节点来连接,需要知道节点的名称,才能进行通讯
> 11 KUBELET_HOSTNAME="--hostname-override=kube-node1" #与本机主机名一致
14 KUBELET_ARGS="--cgroup-driver=systemd --fail-swap-on=false 
--kubeconfig=/etc/kubernetes/kubelet.kubeconfig
--pod-infra-container-image=harbor.soft72.com:8080/public/pod-infrastructure:latest"  #harbor中镜像地址
> #kubelet 扩展参数,自定义 kubelet 的子配置文件 kubelet.kubeconfig(使用客户端与服务器进行通讯的
># 时候服务器的地址和配置文件),kubelet 是用于监视 pod 的,这里指定被监听的 pod 镜像,kubelet.kubeconfig 是 kubelet 的配置文件的一部分,使用命令生成 kubelet.kubeconfig 文件内容
># 设置集群:/etc/kubernetes/kubelet.kubeconfig (默认没有)
># 编写 kubelet.kubeconfig 文件,将生成的信息,写入到 kubelet.kubeconfig 文件中
  • 新建kubelet.kubeconfig文件
># 使用命令方式创建
kubectl config set-cluster local --server="http://192.168.168.60:8080"
kubectl config set-context --cluster="local" local
kubectl config set current-context local
kubectl config view
cat kubelet.kubeconfig 
vim kubelet.kubeconfig 
># #kubelet.kubeconfig 文件,之前并不存在
[root@kube-node1 ~]# vim /etc/kubernetes/kubelet.kubeconfig
apiVersion: v1
clusters:
- cluster:
    server: http://192.168.168.60:8080
  name: local
contexts:
- context:
    cluster: local
    user: ""
  name: local
current-context: local
kind: Config
preferences: {}
users: []
  • 上传 pod-infrastructure到harbor
  • 起服务
[root@kube-node1 ~]# systemctl enable kubelet.service kube-proxy.service 
[root@kube-node1 ~]# systemctl start kubelet.service kube-proxy.service
  • 主控节点验证
[root@kube-master ~]# kubectl get node
NAME         STATUS    ROLES     AGE       VERSION
kube-node1   Ready     <none>    2d        v1.10.3
kube-node2   Ready     <none>    2d        v1.10.3
kube-node3   Ready     <none>    2d        v1.10.3

5、安装kube-dashboard

5.1、部署

  • 上传dashboard镜像到harbor仓库(略)
  • 编辑dashboard配置文件
> [root@kube-master ~]# vim kube-dashboard.yaml 
> 18     spec:
> 19       containers:
> 20       - name: kubernetes-dashboard
> 21         image: harbor.soft72.com:8080/public/kubernetes-dashboard-amd64:v1.8.3 #dashboard私有仓库地址
> 22         ports:
> 23         - containerPort: 9090
> 24           protocol: TCP
> 25         args:
> 26           - --apiserver-host=http://192.168.168.60:8080 #修改为Master的IP
  • 创建dashboard容器
[root@kube-master ~]# kubectl create -f kube-dashboard.yaml
deployment.apps "kubernetes-dashboard" created
service "kubernetes-dashboard" created
  • 验证
> [root@kube-node2 ~]# docker ps #pod随机分配到了node2节点上
> 验证
> http://192.168.168.62:30090
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值