使用kubeadm安装k8s,比起之前一个个安装组件,已经很是简单了。只不过由于国内网络问题,google的东西都被墙了,因此感受安装起来比较费劲。因此安装ks关键在如何拉取镜像,有四个方法法解决:node
github上有一个图形化安装k8s的项目,已经得到CNCF官方认证。 图像界面安装k8slinux
机器名称 | ip地址 | 角色 | yum安装的组件 |
---|---|---|---|
k8s-master | 10.1.69.101 | master | docker、kubelet、kubeadm、kubectl |
k8s-node1 | 10.1.69.102 | node | docker、kubelet、kubeadm |
k8s-node2 | 10.1.69.103 | node | docker、kubelet、kubeadm |
友情提示:虚拟机下安装,最好固定ip地址。特别是master节点,由于安装时,须要使用ip地址,且不能用域名。若是下次ip地址变了,可能会致使集群不可用git
yum install -y wget vim net-tools epel-release
复制代码
swapoff -a
# 永久禁用,打开/etc/fstab注释掉swap那一行。
sed -i 's/.*swap.*/#&/' /etc/fstab
复制代码
# 临时禁用selinux
setenforce 0
# 永久关闭 修改/etc/sysconfig/selinux文件设置
sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
复制代码
systemctl disable firewalld
systemctl stop firewalld
复制代码
## 配置默认源
## 备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
## 下载阿里源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
## 刷新
yum makecache fast
## 配置k8s源
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=0
EOF
## 重建yum缓存
yum clean all
yum makecache fast
yum -y update
复制代码
yum -y install yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce
systemctl enable docker
systemctl start docker
复制代码
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
EOF
sudo systemctl daemon-reload sudo systemctl restart docker
复制代码
没有代理执行步骤5github
mkdir /etc/systemd/system/docker.service.d
touch /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://xxx"
Environment="HTTPS_PROXY=http://xxx"
Environment="NO_PROXY=localhost,127.0.0.1,localaddress,.localdomain.com"
systemctl daemon-reload && systemctl restart docker
复制代码
## 查看集群初始化所需镜像及对应依赖版本号,列出的就是须要下载的镜像
kubeadm config images list
复制代码
#!/bin/bash
## 使用以下脚本下载国内镜像,并修改tag为google的tag
set -e
KUBE_VERSION=v1.15.0
KUBE_PAUSE_VERSION=3.1
ETCD_VERSION=3.3.10
CORE_DNS_VERSION=1.3.1
GCR_URL=k8s.gcr.io
ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers
images=(kube-proxy:${KUBE_VERSION}
kube-scheduler:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-apiserver:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd:${ETCD_VERSION}
coredns:${CORE_DNS_VERSION})
for imageName in ${images[@]} ; do
docker pull $ALIYUN_URL/$imageName
docker tag $ALIYUN_URL/$imageName $GCR_URL/$imageName
docker rmi $ALIYUN_URL/$imageName
done
复制代码
## 配置/etc/profile文件,特別是https,xxx替换为本身或本身公司的代理地址
http_proxy=xxx
https_proxy=xxx
HTTP_PROXY=xxx
HTTPS_PROXY=xxx
复制代码
yum -y install kubelet kubeadm kubectl kubernetes-cni
systemctl enable kubelet && systemctl start kubelet
复制代码
## master节点执行:
sudo kubeadm init \
--apiserver-advertise-address 10.1.69.101 \
--kubernetes-version=v1.15.0 \
--pod-network-cidr=10.244.0.0/16
复制代码
友情提示:若是镜像没有提早拉取,这一步会比较慢。配置了代理的话,可执行:kubeadm config images pull, 单独拉取镜像chrome
若是是kubeadm reset卸载后再安装,可能报错,加入这个参数:--ignore-preflight-errors=alldocker
获得回复:shell
(...省略)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
## 保存好该命令,丢了很差找回。节点加入时须要
kubeadm join 10.1.69.101:6443 --token ou5pvo.qseafc4s8licblzy \
--discovery-token-ca-cert-hash sha256:de9c10f11c50c074f212698b9d514fc12a9c1c4ffe70961aff89ac5e585f0663
复制代码
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
复制代码
sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
## 查看flannal是否安装成功
sudo kubectl -n kube-system get po -l app=flannel -o wide
复制代码
其余节点执行:json
kubeadm join 10.1.69.101:6443 --token ou5pvo.qseafc4s8licblzy \
--discovery-token-ca-cert-hash sha256:de9c10f11c50c074f212698b9d514fc12a9c1c4ffe70961aff89ac5e585f0663
复制代码
sudo kubeadm reset
复制代码
下载yaml文件到本地vim
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
复制代码
配置dashboard界面能够在虚拟机以外访问centos
配置准入控制(不然各类没有权限访问)
apiVersion: v1
kind: ServiceAccount
metadata:
name: dashboard
namespace: kube-system
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: dashboard
subjects:
- kind: ServiceAccount
name: dashboard
namespace: kube-system
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
复制代码
开始安装
sudo kubectl apply -f kubenetes-dashboard.yaml
sudo kubectl appy -f dashboard-rbac.yaml
复制代码
查看dashboard是否安装成功
## 下载镜像须要必定时间,看pod处于running表示安装成功
kubectl get pod -n kube-system |grep kubernetes-dashboard
复制代码
用Firefox查看dashboard页面(chrome没法访问不安全的https)
注意:url中地址必须用https!!!
进入到输入token界面
获取token命令
## 获取登录界面token
kubectl -n kube-system describe $(kubectl -n kube-system \
get secret -n kube-system -o name | grep namespace) | grep token
复制代码
进入dashboard首页
若是dashboard的token过时,如下脚本从新生成config文件
#!/bin/bash
TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}')
kubectl config set-credentials kubernetes-admin --token="${TOKEN}"
复制代码
save导出的时候没有指定image的tag
kubeadm init时,apiserver的地址写错了
echo "1">/proc/sys/net/bridge/bridge-nf-call-iptables
kubeadm reset, 重置节点,从新加入