安装环境: CentOS 7.5,Docker CE 17.03
(本想写1.11.0版本的安装,由于遇到问题,退到1.10.5版本了)
1. 主机配置
关闭防火墙
sudo systemctl stop firewalld sudo systemctl disable firewalld
关闭swap
sudo swapoff -a sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
关闭SELinux
sudo setenforce 0
设置内核参数
cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system
添加host记录,如有dns记录则不需要
cat >> /etc/hosts << EOF 192.168.1.101 k8s1 k8s1.test.local 192.168.1.102 k8s2 k8s2.test.local 192.168.1.103 k8s3 k8s3.test.local EOF
2. 下载Kubernetes镜像
从mirrorgooglecontainers源下载镜像
docker pull mirrorgooglecontainers/kube-apiserver-amd64:v1.10.5 docker pull mirrorgooglecontainers/kube-scheduler-amd64:v1.10.5 docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.10.5 docker pull mirrorgooglecontainers/kube-controller-manager-amd64:v1.10.5 docker pull mirrorgooglecontainers/pause-amd64:3.1 docker pull mirrorgooglecontainers/k8s-dns-kube-dns-amd64:1.14.8 docker pull mirrorgooglecontainers/k8s-dns-dnsmasq-nanny-amd64:1.14.8 docker pull mirrorgooglecontainers/k8s-dns-sidecar-amd64:1.14.8 docker pull quay.io/coreos/etcd:v3.1.12 docker pull quay.io/coreos/flannel:v0.10.0-amd64 docker pull coredns/coredns:1.0.6
将镜像标记为k8s.gcr.io的名称
docker tag mirrorgooglecontainers/kube-apiserver-amd64:v1.10.5 k8s.gcr.io/kube-apiserver-amd64:v1.10.5 docker tag mirrorgooglecontainers/kube-scheduler-amd64:v1.10.5 k8s.gcr.io/kube-scheduler-amd64:v1.10.5 docker tag mirrorgooglecontainers/kube-proxy-amd64:v1.10.5 k8s.gcr.io/kube-proxy-amd64:v1.10.5 docker tag mirrorgooglecontainers/kube-controller-manager-amd64:v1.10.5 k8s.gcr.io/kube-controller-manager-amd64:v1.10.5 docker tag mirrorgooglecontainers/pause-amd64:3.1 k8s.gcr.io/pause-amd64:3.1 docker tag mirrorgooglecontainers/k8s-dns-kube-dns-amd64:1.14.8 k8s.gcr.io/k8s-dns-kube-dns-amd64:1.14.8 docker tag mirrorgooglecontainers/k8s-dns-dnsmasq-nanny-amd64:1.14.8 k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64:1.14.8 docker tag mirrorgooglecontainers/k8s-dns-sidecar-amd64:1.14.8 k8s.gcr.io/k8s-dns-sidecar-amd64:1.14.8 docker tag quay.io/coreos/etcd:v3.1.12 k8s.gcr.io/etcd-amd64:3.1.12
删除无用镜像名
docker images | grep mirrorgooglecontainers | awk '{print "docker rmi "$1":"$2}' | sh
安装、配置kubelet
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=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 yum install -y kubelet-1.10.5 kubeadm-1.10.5 kubectl-1.10.5 systemctl enable kubelet sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf systemctl daemon-reload systemctl start kubelet
安装bash自动补全
yum install bash-completion -y echo "source <(kubectl completion bash)" >> ~/.bashrc
3. 初始化k8s集群
kubeadm init --kubernetes-version v1.10.5 --token-ttl 0 --pod-network-cidr 10.244.0.0/16
指定kubernetes-version版本,由于有墙
token-ttl默认有效为24小时,改为0为永久有效
设置pod-network-cidr为flannel做准备
可以在初始化集群时使用CoreDNS代替kube-dns
kubeadm init --kubernetes-version v1.10.5 --token-ttl 0 \ --pod-network-cidr 10.244.0.0/16 --feature-gates CoreDNS=true
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
如果是root用户也可以使用以下命令
export KUBECONFIG=/etc/kubernetes/admin.conf
配置flannel网络插件
curl -O https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml kubectl apply -f kube-flannel.yml
4. 确认kubernetes运行状态
kubectl get pods --all-namespaces
所有容器都运行时即部署完成
NAMESPACE NAME READY STATUS RESTARTS AGE kube-system etcd-k8s1 1/1 Running 1 6m kube-system kube-apiserver-k8s1 1/1 Running 1 6m kube-system kube-controller-manager-k8s1 1/1 Running 1 6m kube-system kube-dns-86f4d74b45-lmcqv 3/3 Running 3 6m kube-system kube-flannel-ds-amd64-g6g66 1/1 Running 1 6m kube-system kube-proxy-rqnhh 1/1 Running 1 6m kube-system kube-scheduler-k8s1 1/1 Running 1 6m
5. 加入Node节点
Node节点的配置与Master基本相同(参见1、2节),只是所需的docker image少一些,只需要kube-proxy-amd64:v1.10.5、pause-amd64:3.1和flannel:v0.10.0-amd64(如果需要)
docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.10.5 docker pull mirrorgooglecontainers/pause-amd64:3.1 docker pull quay.io/coreos/flannel:v0.10.0-amd64 docker tag mirrorgooglecontainers/kube-proxy-amd64:v1.10.5 k8s.gcr.io/kube-proxy-amd64:v1.10.5 docker tag mirrorgooglecontainers/pause-amd64:3.1 k8s.gcr.io/pause-amd64:3.1 docker images | grep mirrorgooglecontainers | awk '{print "docker rmi "$1":"$2}' | sh
然后使用kubeadm join加入k8s集群,该命令会在Master执行kubeadm init最后生成,如果没有记录下来可用以下命令生成
kubeadm token create --print-join-command
再使用kubectl get node命令确认节点加入情况
NAME STATUS ROLES AGE VERSION k8s1.test.local Ready master 5m v1.10.5 k8s2.test.local Ready <none> 3m v1.10.5 k8s3.test.local Ready <none> 3m v1.10.5
Pingback引用通告: Kubernetes v1.11.1安装 | eBanBan Studio