k8s环境搭建入门

简介: linux环境配置及k8s环境配置

1.linux服务器配置(4核2G磁盘30G)

1.1 yum配置(yum

1.yum配置阿里云镜像
1.1基础镜像
curl http://mirrors.aliyun.com/repo/Centos-7.repo>/etc/yum.repos.d/CentOS-Base.repo
1.2kubernetes.repo
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
2.yum
yum update
yum clean all
yum makecache

1.2 安装docker并配置(docker

1.安装
yum install docker
2.配置阿里云
cat <<EOF  /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://reg-mirror.qiniu.com"
  ]
}
EOF
3.使用docker用户启动docker
sudo useradd docker
sudo usermod  -aG docker docker
su docker
systemctl start docker
4.使用root加入docker用户组启动(不建议)
 sudo usermod -aG docker root
systemctl enable docker.service

1.3 禁用SELinux(禁用SE Linux)

setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

1.4 host设置为master(设置host

1.host-set.sh
#!/bin/bash
NET_NAME=$1
HOST_NM=$2
IP=$(ip addr| grep $NET_NAME | awk '/^[0-9]+: / {}; /inet.*global/ {print gensub(/(.*)\/(.*)/, "\\1", "g", $2)}')
echo "$HOST_NM" >/etc/hostname
echo "$IP $HOST_NM" >>/etc/hosts
2.执行
把eth0 ip4地址设置对应master
sh host-set.sh eth0  master
#重启
reboot

1.5关闭swap(关闭swap)

1.关闭swap交换区
swapoff -a
2.永久保存
sed -i "s/\/dev\/mapper\/centos-swap/#\/dev\/mapper\/centos-swap/g" /etc/fstab

1.6 允许iptables检查桥接流量(入门建议禁用iptables,firewalld)

# 确保 br_netfilter加载 加载命令(sudo modprobe br_netfilter)[root@master k8s]# lsmod | grep br_netfilterbr_netfilter           22256  0bridge                151336  1 br_netfilter
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
#禁用firewalld
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service

2.安装k8s组件

2.1安装并配置 kubectl,kubeletkubeadm

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet

2.2重新启动kubelet

sudo systemctl daemon-reload
sudo systemctl restart kubelet

2.3加入环境配置(K8S-FAQ -1)

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile

2.4 首先使用阿里云把需要的镜像pull下来(kubeadm-pull-image.sh)

#!/bin/bash#作者:院长#QQ群:645072509#使用阿里镜像仓库#查看版本号并替换为阿里镜像仓库源下载kubeadm config images list | sed-e's/^/docker pull /g'-e's#k8s.gcr.io#registry.cn-hangzhou.aliyuncs.com/google_containers#g' | sh-x#将镜像名字更改为原来的k8s.gcr.iodocker images | grep registry.cn-hangzhou.aliyuncs.com/google_containers | awk'{print "docker tag",$1":"$2,$1":"$2}' | sed-e's/registry.cn-hangzhou.aliyuncs.com\/google_containers/k8s.gcr.io/2' | sh-x#将从阿里镜像仓库下载的镜像删除docker images | grep registry.cn-hangzhou.aliyuncs.com/google_containers | awk'{print "docker rmi """$1""":"""$2}' | sh-

2.5使用kubeadm和(kubeadm-init.yaml)文件初始化集群

apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 192.168.56.130 #k8s本机ip  bindPort: 6443nodeRegistration:
  criSocket: /var/run/dockershim.sock #容器运行时支持,此处为docker  name: master
  taints:
- effect: NoSchedule
    key: node-role.kubernetes.io/master
---apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: "registry.cn-hangzhou.aliyuncs.com/google_containers"kind: ClusterConfiguration
kubernetesVersion: v1.20.2
networking:
  dnsDomain: cluster.local
  podSubnet: 10.244.0.0/16   #集群中pod网段  serviceSubnet: 10.254.0.0/16
scheduler: {}
---apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
kubeadm init --config kubeadm-init.yaml


2.6配置 CNI网络插件

可参考(https://kubernetes.io/zh/docs/concepts/cluster-administration/addons/

2.6.1 使用kube-flannel.yaml运行kube-fannel

kubectl apply -f  kube-flannel.yaml

2.7安装配置daskboard(NodePort方式)


2.7.1使用kubernetes-dashboard.yaml运行kubernetes-dashboard

kubectl apply -f kubernetes-dashboard.yaml


2.7.2配置dashboard用户和角色(admin-user-role-binding.yaml)

kubectl apply -f admin-user-role-binding.yaml

2.7.3 查询token

[root@master work]# kubectl  get secret -n kube-system | grep admin-user-token-*
admin-user-token-x9qtl                           kubernetes.io/service-account-token   3      6m21s
[root@master work]# kubectl describe  secret admin-user-token-x9qtl -n kube-system
Name:         admin-user-token-x9qtl
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: admin-user
              kubernetes.io/service-account.uid: 8f6c9809-abda-48bb-86f9-f81eb2272d05
Type:  kubernetes.io/service-account-token
Data
====
ca.crt:     1066 bytes
namespace:  11 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IkVmYWhqN0ZtRDdnNFRoeGQxV0Z5SU94Y0dWbTlYT25WNVBWSmR0SkpoM2sifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLXg5cXRsIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI4ZjZjOTgwOS1hYmRhLTQ4YmItODZmOS1mODFlYjIyNzJkMDUiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06YWRtaW4tdXNlciJ9.Wlot_v9tkWeCpmi7doUzf3LOgSqmM5ZLWp5MgbWJKewXcvR637Xu2wTP-Di9Wub_f734oxZCl97kLdel8YKHbAPT0RCF-gmvGZcTJvfC1q6YH8u5sRcIx2nYfvHpHztp4QzLD1YIauWC5DHmtGfPvtVBgkxp9DoB-KjWgxkPtoldP7GPTgXdhvQelHFgOmeoMFAk0VAry2Yx356Syh3KdM4LEEna0kcBJ87X-TbCC_j076euKm8Uzu2j6-FFVlNl6p0KscLKsrlrmoE0_9TnSdhWSu7ZVMaQoCNQK5BaY24qRL2lj-2T0dbpKbTbDSVGq_yAJ3xarhsbXxmMRC7dGA

2.8新增节点加入集群

# 生成master节点加入命令
echo "$(kubeadm token create --print-join-command) --control-plane --certificate-key $(kubeadm init phase upload-certs --upload-certs | awk 'END{print}')"


# 生成work节点加入命令
kubeadm token create --print-join-command

2.9部署ingress(ingress-controller.yaml)

kubecrl apply -f ingress-controller.yaml


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
1月前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
95 2
|
2月前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
92 5
|
23天前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
1月前
|
Kubernetes Cloud Native 开发者
云原生入门:Kubernetes的简易指南
【10月更文挑战第41天】本文将带你进入云原生的世界,特别是Kubernetes——一个强大的容器编排平台。我们将一起探索它的基本概念和操作,让你能够轻松管理和部署应用。无论你是新手还是有经验的开发者,这篇文章都能让你对Kubernetes有更深入的理解。
|
28天前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。
|
1月前
|
Kubernetes 关系型数据库 MySQL
Kubernetes入门:搭建高可用微服务架构
【10月更文挑战第25天】在快速发展的云计算时代,微服务架构因其灵活性和可扩展性备受青睐。本文通过一个案例分析,展示了如何使用Kubernetes将传统Java Web应用迁移到Kubernetes平台并改造成微服务架构。通过定义Kubernetes服务、创建MySQL的Deployment/RC、改造Web应用以及部署Web应用,最终实现了高可用的微服务架构。Kubernetes不仅提供了服务发现和负载均衡的能力,还通过各种资源管理工具,提升了系统的可扩展性和容错性。
112 3
|
1月前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
54 3
|
25天前
|
Kubernetes Cloud Native 云计算
云原生入门:Kubernetes 和容器化基础
在这篇文章中,我们将一起揭开云原生技术的神秘面纱。通过简单易懂的语言,我们将探索如何利用Kubernetes和容器化技术简化应用的部署和管理。无论你是初学者还是有一定经验的开发者,本文都将为你提供一条清晰的道路,帮助你理解和运用这些强大的工具。让我们从基础开始,逐步深入了解,最终能够自信地使用这些技术来优化我们的工作流程。
|
1月前
|
运维 Kubernetes Cloud Native
云原生入门:Kubernetes和容器化的未来
【10月更文挑战第23天】本文将带你走进云原生的世界,探索Kubernetes如何成为现代软件部署的心脏。我们将一起揭开容器化技术的神秘面纱,了解它如何改变软件开发和运维的方式。通过实际的代码示例,你将看到理论与实践的结合,感受到云原生技术带来的革命性影响。无论你是初学者还是有经验的开发者,这篇文章都将为你开启一段新的旅程。让我们一起踏上这段探索之旅,解锁云原生技术的力量吧!
|
1月前
|
Kubernetes Cloud Native 前端开发
Kubernetes入门指南:从基础到实践
Kubernetes入门指南:从基础到实践
52 0