基于kubeadm
配置机器
准备虚拟机vmware
系统镜像为:CentOS-7-x86_64-DVD-1708
CPU 2核
磁盘 20G,
内存 2G
共三台,组成集群
安装选择 Install CentOS 7
软件选择 开发及生产工作站
安装位置选择默认自动分区
禁用Kdump
打开网络
在这里我的虚拟网卡有点问题,总是装不上, 于是就nat模式
只有三点就好:
- 能联网
- 能互通,
- 复制命令, 我直接在一个节点开终端操作, 没想到支持文字复制, 还算ok
命令模式
systemctl set-default multi-user.target
图形模式
systemctl set-default graphical.target
配置网络
查看ip地址:
ip addr
配置静态ip,保证节点之间互通:
vim /etc/sysconfig/network-scripts/ifcfg-ens33
1
2
3
4
5
6BOOTPROTO=static IPADDR=192.168.182.5 NETMASK=255.255.255.0 GATEWAY=192.168.182.2 ONBOOT=yes
配置dns
vim /etc/resolv.conf
1
2nameserver 192.168.182.2
配置主机名
1
2
3
4
5
6
7vim /etc/hostname node1 vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=node3
配置host文件
1
2
3
4
5
6cat >> /etc/hosts << EOF 192.168.182.3 node1 192.168.182.4 node2 192.168.182.5 node3 EOF
保证网络通畅
1
2
3
4
5service network restart ping baidu.com ping 192.168.182.4 ping 192.168.182.3
配置yum源
1
2
3wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum makecache
关闭防火墙
1
2systemctl stop firewalld & systemctl disable firewalld
关闭Swap
1
2
3swapoff -a 编辑/etc/fstab,注释掉包含swap的那一行即可
添加docker仓库
1
2
3yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache
安装docker
1
2
3yum install docker-ce -y docker --version
启动docker
1
2
3systemctl start docker & systemctl enable docker docker run --rm hello-world
关闭selinux
1
2setenforce 0
配置kubeadm镜像源
1
2
3
4
5
6
7
8
9
10cat <<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
设置iptables内核参数
1
2
3
4
5
6cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system
安装kubeadm组件
1
2
3
4yum install -y kubelet kubeadm kubectl yum -y install kubernetes-cni systemctl enable kubelet && systemctl start kubelet
获取kubeadm镜像
在这里, 前四个都是最新的1.16.0版本
关于使用的版本可直接kubeadm init 后通过报错中的版本查看当前需要的镜像版本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25#!/bin/bash APISERVER=v1.16.0 MANAGER=v1.16.0 SCHEDULER=v1.16.0 PROXY=v1.16.0 PAUSE=3.1 ETCD=3.3.15-0 COREDNS=1.6.2 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:$APISERVER docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:$MANAGER docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:$SCHEDULER docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:$PROXY docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:$ETCD docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$COREDNS docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:$APISERVER k8s.gcr.io/kube-apiserver:$APISERVER docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:$MANAGER k8s.gcr.io/kube-controller-manager:$MANAGER docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:$SCHEDULER k8s.gcr.io/kube-scheduler:$SCHEDULER docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:$PROXY k8s.gcr.io/kube-proxy:$PROXY docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:$PAUSE k8s.gcr.io/pause:$PAUSE docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:$ETCD k8s.gcr.io/etcd:$ETCD docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:$COREDNS k8s.gcr.io/coredns:$COREDNS
报错
Cannot connect to the Docker daemon at unix:
1
2
3
4systemctl daemon-reload service docker restart service docker status
master 节点初始化
1
2
3
4
5
6kubeadm init --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
查看错误日志
journalctl -f -u kubelet
发现警告
Warning:detected “cgroupfs” as the Docker cgroup driver. The recommended driver is “systemd”.
vim /etc/docker/daemon.json
1
2
3
4{ "exec-opts":["native.cgroupdriver=systemd"] }
systemctl restart docker
systemctl status docker
查看, 卸载安装过的包
yum list installed | grep docker
yum -y remove docker-engine.x86_64
安装网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
查看kube-system状态
kubectl get pods -n kube-system
发现 coredns Pending, 加上"cniVersion": “0.2.0” 即可
vim /etc/cni/net.d/10-flannel.conflist
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21"name": "cbr0", "cniVersion": "0.2.0", "plugins": [ { "type": "flannel", "delegate": { "hairpinMode": true, "isDefaultGateway": true } }, { "type": "portmap", "capabilities": { "portMappings": true } } ] }
安装worker节点
只需要到 安装kubeadm组件 这一步
如果init过, 那就kubeadm reset, 再清理下: rm -rf $HOME/.kube, 然后再join
发现无法 kubectl get no
he connection to the server localhost:8080 was refused - did you specify the right host or port?
需要: kubectl get nodes node2 --kubeconfig=/etc/kubernetes/kubelet.conf
发现 worker NotReady
跟之前一样, 需要加上 cni键
vim /etc/cni/net.d/10-flannel.conflist
给node打label
kubectl label nodes node3 node-role.kubernetes.io/worker=
k8s的helloworld
docker images | grep hello-world
kubectl run helloworld --image=hello-world --replicas=2 --port=80
kubectl delete deploy helloworld
安装dashboard
1
2kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
1
2
3
4
5kubectl get pod -owide --all-namespaces=true 发现ImagePullBackOff describe pod 发现: Failed to pull image "k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1"
去dashboard安装的node-3执行
1
2
3
4docker pull mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1 docker tag mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1 docker rmi mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1
未成功,pod一直重启
端口转发访问pod
1
2kubectl port-forward my-pod hostport:podport
下载镜像heapster-influxdb-amd64
超时, 于是:
1
2
3
4docker pull mirrorgooglecontainers/heapster-influxdb-amd64:v1.5.2 docker tag docker.io/mirrorgooglecontainers/heapster-influxdb-amd64:v1.5.2 k8s.gcr.io/heapster-influxdb-amd64:v1.5.2 docker rmi -f mirrorgooglecontainers/heapster-influxdb-amd64:v1.5.2
kubectl监听资源
kubectl get no --watch
下载源码
1
2git clone -c core.symlinks=true -b release-1.9 https://github.com/kubernetes/kubernetes.git
Docker 源
修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值。
1
2
3
4{ "registry-mirrors": ["https://registry.docker-cn.com"] }
https://7bezldxe.mirror.aliyuncs.com
最后
以上就是凶狠冬天最近收集整理的关于【代码】kubenetes集群部署的全部内容,更多相关【代码】kubenetes集群部署内容请搜索靠谱客的其他文章。
发表评论 取消回复