k8s安装教程
参考文章:https://www.kubernetes.org.cn/7189.htmlhttps://www.kubernetes.org.cn/5462.htmlhttps://www.kubernetes.org.cn/6632.html设置主机名设置主机名hostname,管理节点设置主机名为 master需要设置其他主机名称时,可将 master 替换为正确的主机名node1、node2
参考文章:
https://www.kubernetes.org.cn/7189.html
https://www.kubernetes.org.cn/5462.html
https://www.kubernetes.org.cn/6632.html
设置主机名
设置主机名hostname,管理节点设置主机名为 master
需要设置其他主机名称时,可将 master 替换为正确的主机名node1、node2即可。
hostnamectl set-hostname master
添加域名解析
cat <<EOF >>/etc/hosts
192.168.241.101 master
192.168.241.102 node1
192.168.241.103 node2
EOF
关闭防火墙、selinux和swap
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
配置内核参数
将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
添加阿里云yum源
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 -y install kubectl kubelet kubeadm bash-completion
#启动Kubelet
systemctl enable kubelet && systemctl start kubelet
以上步骤在所有节点执行
初始化 K8S 集群-master节点
这一步很关键,由于kubeadm 默认从官网k8s.grc.io下载所需镜像,国内无法访问,因此需要通过–image-repository指定阿里云镜像仓库地址。
- 版本号为实际安装的版本号
- POD的网段为: 10.122.0.0/16
- api server地址就是master本机IP。
kubeadm init --kubernetes-version=1.19.3 \
--apiserver-advertise-address=192.168.241.101 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16
安装 kubectl 命令,复制输出的命令执行:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
加载命令自动补全
source <(kubectl completion bash)
查看节点状态
kubectl get node
查看pod状态,pod创建失败大多数pull image 可以手动拉取
kubectl get pods -A
查看pod错误信息
kubectl -n <namespace> describe pod <pod_name>
安装网络插件
如遇网络问题可以复制下来
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml
查看节点状态,NoReady 变为 Ready
kubectl get node
Node节点加入集群
此命令在 master kubeamd init 成功后打印
kubeadm join 192.168.241.101:6443 --token 5stygn.lozz26nanhz3uu20 \
--discovery-token-ca-cert-hash sha256:58f544c5f67522fcfa7ce613a5a2948fd94d64ae7686937c8a44c9180b950261
加入成功后在 master 上运行 kubectl get node 查看节点状态。
初始化或加入集群失败,重置配置
kubeadm reset
rm -rf $HOME/.kube/config
部署Dashboard
本例 k8s 是 v1.19.3,对应的 dashboard 是 v2.0.4 这个版本,
具体去这里查看对应的版本 https://github.com/kubernetes/dashboard/releases
手动拉取镜像,确定镜像能拉取成功。
可以替换其他仓库(阿里云<容器镜像服务>搜索用户公开镜像),同时修改 recommended.yaml kubernetesui镜像地址
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml
docker pull kubernetesui/dashboard:v2.0.4
docker pull kubernetesui/metrics-scraper:v1.0.4
修改端口配置:
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 30000
selector:
k8s-app: kubernetes-dashboard
部署
kubectl apply -f recommended.yaml
部署成功后,生成登录token
touch dashboard-account.yaml
cat >> dashboard-account.yaml << EOF
apiVersion: v1
kind: ServiceAccount
metadata:
name: dashboard-admin
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: dashboard-admin
subjects:
- kind: ServiceAccount
name: dashboard-admin
namespace: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
EOF
部署
kubectl apply -f dashboard-account.yaml
查看token
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
FAQ:
1.重置并删除网络(不确定是否有效):
kubeadm reset
rm -rf $HOME/.kube/config
systemctl stop kubelet
systemctl stop docker
rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/
ifconfig cni0 down
ifconfig flannel.1 down
ifconfig docker0 down
ip link delete cni0
ip link delete flannel.1
systemctl start docker
systemctl restart kubelet
2.忘记加入集群的token:
kubeadm token create #重新生成token
#列出token
kubeadm token list | awk -F" " '{print $1}' |tail -n 1
#获取CA公钥的哈希值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^ .* //'
kubeadm join 192.168.241.101:6443 --token token填这里 --discovery-token-ca-cert-hash sha256:哈希值填这里
更多推荐
所有评论(0)