kubernetes部署
一、系统准备
1、关闭防火墙(测试环境)
systemctl stop firewalld
systemctl disable firewalld
2、设置selinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
3、修改主机名
hostnamectl set-hostname master
hostnamectl set-hostname node1
hostnamectl set-hostname node2
4、 设置本地解析(vi /etc/hosts)
192.168.1.10 master
192.168.1.20 node1
192.168.1.30 node2
5、服务器设置
echo "net.bridge.bridge-nf-call-iptables = 1" >>/etc/sysctl.conf
echo "net.bridge.bridge-nf-call-ip6tables = 1" >>/etc/sysctl.conf
sysctl -p#是设置生效
6、关闭缓存
swapoff -a #临时禁用
重点:注释:/etc/fstab的swap所在行 #永久禁用,此处必须禁用,否则重启node后无法加入cluster
二、安装docker
1、安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
2、添加yum源
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
3、更新源并安装docker
yum update -y
yum install -y docker-ce-18.06.1.ce
4、创建docker目录
mkdir /etc/docker
mkdir -p /etc/systemd/system/docker.service.d
5、创建docker deamon文件
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
6、加载deamon重启docker
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
三、安装kubernetes
1、配置kubernetes的yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kube*
EOF
2、安装kubeadm、kubelet、kubectl
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable kubelet
systemctl start kubelet
3、安装master
kubeadm init --apiserver-advertise-address 192.168.1.10 --pod-network-cidr=10.244.0.0/16
--apiserver-advertise-address #指明master的那个interface与cluster与其他节点通信(如果mstaer有多个interface建议明确指定,如果不指定,kubeadm会自动选择有默认网关的interface)
--pod-network-cidr #指定pod网络的范围
#--pod-network-cidr有自己的要求,此处使用的是flanel网络,所以必须设置为这个CIDR
初始化过程:
1)kubeadm 执行初始化前的检查。
2)生成 token 和证书。
3)生成 KubeConfig 文件,kubelet 需要这个文件与 Master 通信。
4)安装 Master 组件,会从 goolge 的 Registry 下载组件的 Docker 镜像,这一步可能会花一些时间,主要取决于网络质量。
5)安装附加组件 kube-proxy 和 kube-dns。
6)Kubernetes Master 初始化成功。
7)提示如何配置 kubectl,后面会实践。
8)提示如何安装 Pod 网络,后面会实践。
9)提示如何注册其他节点到 Cluster,后面会实践。
5、配置kubectl(根据输出提示:执行以下命令)
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
6、查看系统的pod状态
kubectl get pods --all-namespaces #在没有安装网络前:coredns处于pending状态
7、命令自动补全
yum install -y bash-completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
注意:直接在当前终端使用会报错:bash: _get_comp_words_by_ref: 未找到命令!!(重新打开新的终端即可)
四、安装网络
1、cluster的pod必须通过网络通信(此处以flannet为例)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
2、查看系统pod状态
kubectl get pods --all-namespaces #所有pod处于running状态
五、安装node节点
1、配置kubernetes的yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kube*
EOF
2、安装kubeadm、kubelet、kubectl
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable kubelet
systemctl start kubelet
3、根据安装master完成时的提示安装
kubeadm join 192.168.1.10:6443 --token d1dyaj.31zxywbg93s1ywjy --discovery-token-ca-cert-hash sha256:71a91721595fde66b6382908d801266602a14de8e16bdb7a3cede21509427009
4、忘记改提示(每次只有24小时内有效)
kubeadm token create --print-join-command #重新生成加入的令牌命令
5、查看节点状态
kubectl get nodes #目前所有节点都是 NotReady,这是因为每个节点都需要启动若干组件,这些组件都是在 Pod 中运行,需要首先从 google 下载镜像
6、查看pod详情
kubectl describe pod <Pod Name> -n namespace_name #不指定namespace则使用默认的namespace
#备注:此处可能需要打开节点的转发功能
临时开启:echo "1" >/proc/sys/net/ipv4/ip_forward
永久开启:vi /etc/sysconfig/network
FORWARD_IPV4="YES"
7、重新加入节点(之前已加入过)
rm /etc/kubernetes/kubelet.conf /etc/kubernetes/bootstrap-kubelet.conf /etc/kubernetes/pki/ca.crt
浙公网安备 33010602011771号