前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubernetes v1.9.0 离线安装

Kubernetes v1.9.0 离线安装

原创
作者头像
江小白
修改2019-06-14 17:39:52
2.5K0
修改2019-06-14 17:39:52
举报

一、环境信息: 环境信息(采用一个master节点+两个node节点)

master 192.168.10.10
node1  192.168.10.11
node2  192.168.10.12

操作系统版本

CentOS Linux release 7.5.1804 

二、下载离线包:

下载对应版本的离线包

三、各个节点通用操作

1、将离线包k8s-offline-install.zip 上传到各个节点上

# unzip k8s-offline-install.zip

2、安装docker-ce17.03(kubeadmv1.9最大支持docker-ce17.03)

# yum localinstall  docker-ce*

3、修改docker的镜像源为国内的daocloud的。

#curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://a58c8480.m.daocloud.io

4、启动docker-ce

# systemctl start docker 
# systemctl enable docker

5、关闭selinux和防火墙

# setenforce 0
# sed -i  "s/SELINUX=enforcing/SELINUX=permissive/g" /etc/selinux/config
# systemctl disable firewalld.service
# systemctl stop firewalld.service

6、修改各个节点的主机名

# hostnamectl set-hostname  node2

7、修改hosts文件,使用本地解析主机名

cat <<"EOF">/etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.20.11 master 
172.16.20.12 node1  
172.16.20.13 node2  
EOF

8、配置系统路由参数,防止kubeadm报路由警告

cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

9、关闭swap

# swapoff -a 
# vi /etc/fstab
注释swap
#/dev/mapper/cl-swap swap swap defaults 0 0

10、导入镜像

docker load < ./docker_images/etcd-amd64_v3.1.10.tar
docker load <./docker_images/flannel\:v0.9.1-amd64.tar
docker load <./docker_images/k8s-dns-dnsmasq-nanny-amd64_v1.14.7.tar
docker load <./docker_images/k8s-dns-kube-dns-amd64_1.14.7.tar
docker load <./docker_images/k8s-dns-sidecar-amd64_1.14.7.tar
docker load <./docker_images/kube-apiserver-amd64_v1.9.0.tar
docker load <./docker_images/kube-controller-manager-amd64_v1.9.0.tar
docker load <./docker_images/kube-scheduler-amd64_v1.9.0.tar
docker load < ./docker_images/kube-proxy-amd64_v1.9.0.tar
docker load <./docker_images/pause-amd64_3.0.tar
docker load < ./docker_images/kubernetes-dashboard_v1.8.1.tar

11、安装安装kubelet kubeadm kubectl包

# yum localinstall  socat-1.7.3.2-2.el7.x86_64.rpm kubernetes-cni-0.6.0-0.x86_64.rpm  kubelet-1.9.9-9.x86_64.rpm kubectl-1.9.0-0.x86_64.rpm kubectl-1.9.0-0.x86_64.rpm kubeadm-1.9.0-0.x86_64.rpm

12、启用开机启动,此处仅需要enable

# systemctl enable kubelet

四、master节上用操作

1、master节点与node节点做互信

[root@master ~]# ssh-keygen
[root@master ~]# ssh-copy-id node1
[root@master ~]# ssh-copy-id node2
[root@master ~]# ssh-copy-id maste

2、kubelet默认的cgroup的driver和docker的不一样,docker默认的cgroupfs,kubelet默认为systemd

cp -a  /etc/systemd/system/kubelet.service.d/10-kubeadm.conf /etc/systemd/system/kubelet.service.d/10-kubeadm.conf_bak
sed -i "s/systemd/cgroupfs/g"  /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
systemctl daemon-reload

3、将环境reset一下

kubeadm reset

4、在重新执行

kubeadm init --kubernetes-version=v1.9.0 --pod-network-cidr=10.244.0.0/16

kubernetes默认支持多重网络插件如flannel、weave、calico,这里使用flanne,就必须要设置–pod-network-cidr参数,10.244.0.0/16是kube-flannel.yml里面配置的默认网段,如果需要修改的话,需要把kubeadm init的–pod-network-cidr参数和后面的kube-flannel.yml里面修改成一样的网段就可以了。

**注意:将kubeadm join xxx保存下来,等下node节点需要使用

**

5、配置下环境变量

对于非root用户

# mkdir -p $HOME/.kube
 # cp -i /etc/kubernetes/admin.conf $HOME/.kube/config 
# chown $(id -u):$(id -g) $HOME/.kube/config

对于root用户

# export KUBECONFIG=/etc/kubernetes/admin.conf

也可以直接放到~/.bash_profile

# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

source一下环境变量

# source ~/.bash_profile

6、测试

kubectl version
kubectl version

7、安装网络,可以使用flannel、calico、weave、macvlan这里我们用flannel。

若要修改kube-flannel.yml网段,需要kubeadm –pod-network-cidr=和这里同步

修改network项

"Network": "10.244.0.0/16",

kubectl create  -f kube-flannel.yml

8、安装dashboard

kubectl apply -f kubernetes-dashboard.yaml

kubectl get pods命令来查看部署状态:

9、创建用户

1).创建服务账号

首先创建一个叫admin-user的服务账号,并放在kube-system名称空间下:

admin-user.yaml
admin-user.yaml

执行kubectl create命令:

kubectl create -f admin-user.yaml

2).绑定角色

默认情况下,kubeadm创建集群时已经创建了admin角色,我们直接绑定即可:

admin-user-role-binding.yaml
admin-user-role-binding.yaml

执行kubectl create命令:

kubectl create -f  admin-user-role-binding.yaml

3).获取Token

现在我们需要找到新创建的用户的Token,以便用来登录dashboard:

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

然后把Token复制到登录界面的Token输入框中,登入后显示如下:

用firefox登录

https://master:32666

五、node节点操作

修改kubelet配置文件根上面有一将cgroup的driver由systemd改为cgroupfs kubelet默认的cgroup的driver和docker的不一样,docker默认的cgroupfs,kubelet默认为systemd

cp -a  /etc/systemd/system/kubelet.service.d/10-kubeadm.conf /etc/systemd/system/kubelet.service.d/10-kubeadm.conf_bak
sed -i "s/systemd/cgroupfs/g"  /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
systemctl daemon-reload

使用刚刚执行kubeadm后的kubeadm join –xxx

六、测试集群

在master节

查看节点

kubectl get nodes
kubectl get nodes

查看服务

kubectl get pods --all-namespaces
kubectl get pods --all-namespaces

七、默认token 24小时就会过期,后续的机器要加入集群需要重新生成token

重新生成新的token

# kubeadm token create
[kubeadm] WARNING: starting in 1.8, tokens expire after 24 hours by default (if you require a non-expiring token use --ttl 0)
aa78f6.8b4cafc8ed26c34f
# kubeadm token list
TOKEN                     TTL       EXPIRES                     USAGES                   DESCRIPTION   EXTRA GROUPS
aa78f6.8b4cafc8ed26c34f   23h       2017-12-26T16:36:29+08:00   authentication,signing   <none>        system:bootstrappers:kubeadm:default-node-token

获取ca证书sha256编码hash值

# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
0fd95a9bc67a7bf0ef42da968a0d55d92e52898ec37c971bd77ee501d845b538

节点加入集群

格式如下:kubeadm join --token xxx master_ip:6443

# kubeadm join --token aa78f6.8b4cafc8ed26c34f --discovery-token-ca-cert-hash sha256:0fd95a9bc67a7bf0ef42da968a0d55d92e52898ec37c971bd77ee501d845b538  172.16.6.79:6443 --skip-preflight-checks

八、集成Heapster

Heapster是容器集群监控和性能分析工具,天然的支持Kubernetes和CoreOS。

Heapster支持多种储存方式,本示例中使用influxdb,直接执行下列命令即可:

kubectl create -f http://mirror.faasx.com/kubernetes/heapster/deploy/kube-config/influxdb/influxdb.yaml
kubectl create -f http://mirror.faasx.com/kubernetes/heapster/deploy/kube-config/influxdb/grafana.yaml
kubectl create -f http://mirror.faasx.com/kubernetes/heapster/deploy/kube-config/influxdb/heapster.yaml
kubectl create -f http://mirror.faasx.com/kubernetes/heapster/deploy/kube-config/rbac/heapster-rbac.yaml

上面命令中用到的yaml是从 https://github.com/kubernetes/heapster/tree/master/deploy/kube-config/influxdb复制的,并将k8s.gcr.io修改为国内镜像。

然后,查看一下Pod的状态:

kubectl get pods --namespace=kube-system

九、页面显示

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、环境信息: 环境信息(采用一个master节点+两个node节点)
  • 操作系统版本
  • 二、下载离线包:
  • 三、各个节点通用操作
  • 四、master节上用操作
  • 五、node节点操作
  • 六、测试集群
  • 七、默认token 24小时就会过期,后续的机器要加入集群需要重新生成token
  • 八、集成Heapster
  • 九、页面显示
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档