设为首页 收藏本站
查看: 1765|回复: 0

[经验分享] k8s ui 服务搭建

[复制链接]

尚未签到

发表于 2019-1-31 12:10:18 | 显示全部楼层 |阅读模式
  一、环境配置
  master  172.16.101.199      docker,apiserver, controller-manager, scheduler                       
etcd    172.16.101.199      etcd                                                                  
node1   172.16.101.221      flannel, docker, kubelet, kube-proxy         
node2   172.16.101.221      flannel, docker, kubelet, kube-proxy
  1/设置hosts文件
172.16.101.199 master
172.16.101.199 etcd
172.16.101.220 node1
172.16.101.221 node2
  2、基础设置
2、1 关闭防火墙
2、2 关闭selinux
2、3 设置hosts
2.4 启用iPv4转发
CentOS7 下可编辑配置文件/etc/sysctl.conf
  net.ipv4.ip_forward = 1
  net.bridge.bridge-nf-call-ip6tables = 1
  net.bridge.bridge-nf-call-iptables = 1
  执行sudo sysctl -p 立刻生效。
2.5 禁用SWAP:
永久禁用swap可以直接修改/etc/fstab文件,注释掉swap项
2.6 免秘钥登录
  2、master:
  (1)、安装docker
  CentOS7
安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
#添加Docker软件包源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新yum包索引
yum makecache fast
#安装Docker CE
yum install docker-ce -y
#启动
systemctl start docker
systemctl enable docker

  #卸载方法一
yum remove docker-ce
rm -rf /var/lib/docker
  #卸载docker方法二:
yum list installed | grep docker
删除安装包
sudo yum -y remove docker-engine.x86_64
  (2)安装kubernets.flannel.etcd
yum install kubernetes-master etcd flannel-y
(3)配置etcd
cat /etc/etcd/etcd.conf |egrep -v "^#|^$"
  ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" ## 监听地址端口
ETCD_ADVERTISE_CLIENT_URLS="http://etcd:2379" ## etcd集群配置;多个etcd服务器,直接在后面加url
  ##启动etcd服务
#systemctl start etcd
  (4)配置kubernetes
#cat /etc/kubernetes/kubernetes.conf
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" ## kube启动时绑定的地址
KUBE_ETCD_SERVERS="--etcd-servers=http://etcd:2379" ## kube调用etcd的url
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=172.17.0.0/16" ## 此地址是docker容器的地址段
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota"
KUBE_API_ARGS=""
  #cat config |egrep -v "^#|^$"
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://172.16.101.199:8080" ## kube master api url
(5)配置flanned
#cat /etc/sysconfig/flanneld
  FLANNEL_ETCD_ENDPOINTS="http://etcd:2379"
FLANNEL_ETCD_PREFIX="/kube/network" 注意:kube
特别注意项:这条选项很重要
  etcdctl mk /kube/network/config '{"Network":"172.17.0.0/16"}' ## 注意此处的ip和上文中出现的ip地址保持一致.
  报错问题:
E0808 11:09:44.387201   10537 network.go:102] failed to retrieve network config: 100: Key not found (/kube) [3]
  3、node1-2 安装
  1). 安装软件包.
#yum install kubernetes-node flannel -y #默认安装docker-1.13.1版本,其需要启动docker就可以了
systemctl enable docker
systemctl start docker
docker version
2)配置flannel
  #cat /etc/sysconfig/flanneld
  FLANNEL_ETCD_ENDPOINTS="http://etcd:2379"
FLANNEL_ETCD_PREFIX="/kube/network" 注意:kube
  systemctl start flanneld
  3)配置kubelet
#cd /etc/kubernetes
#cat config |egrep -v "^#|^$"
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://172.16.101.199:8080" ## kube master api url
  #cat kubelet |egrep -v "^#|^$"
KUBELET_ADDRESS="--address=0.0.0.0" ## kubelet 启动后绑定的地址
KUBELET_PORT="--port=10250" ## kubelet 端口
KUBELET_HOSTNAME="--hostname-override=172.16.101.220" ##kubelet的hostname,在master执行kubectl get nodes显示的名字
KUBELET_API_SERVER="--api-servers=http://172.16.101.199:8080" ## kube master api url
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""
4、启动顺序
master:
systemctl start docker #启动
systemctl status docker #检测
systemctl start etcd
systemctl status etcd
systemctl start flanneld
systemctl status flanneld
查看ip,会出现flannel0的网络接口设备,该地址和docker0地址是一致的,如果不一致请确认以上服务是否正常启动

启动顺序:kube-apiserver居首.
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler

  node:
systemctl start docker.service
systemctl start kube-proxy
systemctl start kubelet
  5、检测配置正确性
访问http://kube-apiserver:port
http://172.16.101.199:8080 查看所有请求url
http://172.16.101.199:8080/healthz/ping 查看健康状况
  6、开启k8s dashboard:
  master:
  1). 在master上验证服务.
#kubectl get nodes ## 获取k8s客户端.
NAME             STATUS    AGE
172.16.101.220   Ready     1h
172.16.101.221   Ready     1h
  #kubectl get namespace ## 获取k8s所有命名空间
NAME          STATUS    AGE
default       Active    1h
kube-system   Active    1h
  新建kube-dashboard.yaml
  cd /usr/local/src/docker/
  kubectl delete -f kubernetes-dashboard.yaml
kubectl get pods --namespace=kube-system
  kubectl get pod --all-namespaces
kubectl describe pods kubernetes-dashboard-2215670400-w0j11 --namespace=kube-system
  客户端:
systemctl restart flanneld
systemctl start kube-proxy
systemctl start kubelet
node1-2
  客户端执行:
yum install python-rhsm
yum install rhsm
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm
rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem
  docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest
  #基础命令
kubectl get po/svc/cm/rc : 查看容器
kubectl describe po name :查看详情
kubectl delete po name :删除资源
-o wide : 多显示几列信息
--all-namespaces : 所有命名空间
-n name : 指定命名空间(default可以不带此参数)
kubectl apply/create -f aaa.yaml : 执行yml文件
kubectl exec 容器名称 -it -- bash : 进入容器
exit : 退出
  kubectl delete po name :删除资源
  1、问题一
解决不能删除问题:
[root@localhost docker]# kubectl create -f kubernetes-dashboard.yaml
Error from server (AlreadyExists): error when creating "kubernetes-dashboard.yaml": deployments.extensions "kubernetes-dashboard" already exists
Error from server (AlreadyExists): error when creating "kubernetes-dashboard.yaml": services "kubernetes-dashboard" already exists
解决方法:
kubectl delete namespace kube-system
kubectl delete -f kubernetes-dashboard.yaml
  https://www.iyunv.net/article/94343.htm/
  2、问题二
解决超时问题:
Error: 'dial tcp 172.17.71.2:9090: getsockopt: no route to host'
Trying to reach: 'http://172.17.71.2:9090/'
getsockopt: connection timed out’问题
  如果安装的docker版本为1.13及以上,并且网络畅通,flannel、etcd都正常,但还是会出现getsockopt: connection timed out'的错误,则可能是iptables配置问题。具体问题:
  Error: 'dial tcp 10.233.50.3:8443: getsockopt: connection timed out
  如果安装的docker版本为1.13及以上,并且网络畅通,flannel、etcd都正常,但还是会出现getsockopt: connection timed out'的错误,则可能是iptables配置问题。具体问题:
  Error: 'dial tcp 10.233.50.3:8443: getsockopt: connection timed out
  docker从1.13版本开始,可能将iptables FORWARD chain的默认策略设置为DROP,从而导致ping其他Node上的Pod IP失败,遇到这种问题时,需要手动设置策略为ACCEPT:
  sudo iptables -P FORWARD ACCEPT
  使用iptables -nL命令查看,发现Forward的策略还是drop,可是我们明明执行了iptables -P FORWARD ACCEPT。原来,docker是在这句话执行之后启动的,需要每次在docker之后再执行这句话。。。这么做有点太麻烦了,所以我们修改下docker的启动脚本:
  vi /usr/lib/systemd/system/docker.service
  [Service]
Type=notify
  ExecStart=/usr/bin/dockerd $DOCKER_NETWORK_OPTIONS $DOCKER_OPTS $DOCKER_DNS_OPTIONS
  #添加这行操作,在每次重启docker之前都会设置iptables策略为ACCEPT
ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT
  ExecReload=/bin/kill -s HUP $MAINPID
  在启动文件中的 [Service] 下添加一行配置,即上面代码中的配置即可。
  然后重启docker,再次查看dashboard网页。
  这个问题在实在解决不了
master装一个node客户端




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-670031-1-1.html 上篇帖子: k8s, etcd集群搭建报报错:request cluster ID mismatch (got 下篇帖子: Etcd配置集群但不起作用的解决办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表