Appearance
搭载blog之安装k3s(一)
要求:单点安装搭载k3s,并用k3s安装nginx
1.安装k3s
介绍:轻量级的 Kubernetes 发行版,内核机制还是和 k8s 一样,安装简单,占用资源少,只需要512M内存就可以运行
官网安装
$curl -sfL https://get.k3s.io | sh -$
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_KUBECONFIG_MODE="644" sh -查验成功
$ kubectl get nodes
补全命令
$ ku
如果失败了,需要安装bash-completion项目
$ apt-get update && apt-get install -y bash-completion
再次执行source <(kubectl completion bash) 尝试成功
# kubectl + tab键,如果没用可以多按几次tab
root@JamesWuService:~# kubectl
alpha auth cordon diff get patch run version
annotate autoscale cp drain help plugin scale wait
api-resources certificate create edit kustomize port-forward set
api-versions cluster-info debug exec label proxy taint
apply completion delete explain logs replace top
attach config describe expose options rollout uncordon
- 设置别名 查看/usr/local/bin 命令
可以让永久生效,比如将
1.打开文件
$ vi .bashrc
2.编辑添加
alias kaf='kubectl apply -f'
alias kgn='kubectl get namespace'
alias kgp='kubectl get pods -o wide'
alias kgs='kubectl get -o wide svc'
3.保存
$ source .bashrc
2.安装nginx
安装nginx,并通过外网ip和域名访问
内网部署nginx 创建namespace,deployment和service
#创建namesspace apiVersion: v1 kind: Namespace
metadata: name: ns-test
labels: name: label-test#创建pod/deployment apiVersion: apps/v1 kind: Deployment metadata: namespace: ns-test name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:alpine ports: - containerPort: 80
#创建service apiVersion: v1 kind: Service metadata: namespace: ns-test name: nginx-service spec: selector: app: nginx ports:
- protocol: TCP port: 80 targetPort: 80
查看部署情况
$ kgp -n ns-test
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-deployment-965685897-7zb2s 1/1 Running 0 51m 10.42.0.9 jameswuservice <none> <none>
nginx-deployment-965685897-cm4sd 1/1 Running 0 51m 10.42.0.10 jameswuservice <none> <none>
curl 10.42.0.10 或者 curl 10.42.0.9 根据ip 可访问 curl ip 可看到hello nginx html
设置node端口,外网访问 修改service
apiVersion: v1 kind: Service metadata: namespace: ns-test name: nginx-service spec: selector: app: nginx type: NodePort ports:
- protocol: TCP port: 80 targetPort: 80 nodePort: 32000
执行更新
$ kaf nginx-yaml.yaml
通过外网ip访问 http://:32000
配置域名访问 创建nginx-ingress.yaml
创建 nginx-ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-nginx namespace: ns-test spec: rules:
- host: "jamesyt.com" http: paths:
- pathType: Prefix path: "/" backend: service: name: nginx-service #和上面的service 名字必须对应 port: number: 80
- host: "www.jamesyt.com" http: paths:
- pathType: Prefix path: "/" backend: service: name: nginx-service #和上面的service 名字必须对应 port: number: 80
- host: "jamesyt.com" http: paths:
访问域名:http://jamesyt.com/
3.卸载k3s
在卸载,namespace 出现Terminating 状态
原因是有service报错
kubectl get apiservice
删除掉false的service
kubectl delete apiservice xxx
或者进入namespace 进行编写
kubectl edit ns xxx
卸载k3s
$ /usr/local/bin/k3s-uninstall.sh
4.使用阿里安装k3s
安装
curl –sfL
https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh |
INSTALL_K3S_MIRROR=cn K3S_KUBECONFIG_MODE=644 sh -s -
--system-default-registry "registry.cn-hangzhou.aliyuncs.com"
--write-kubeconfig ~/.kube/config
--write-kubeconfig-mode 666
--disable traefik配置 containerd 的 mirror
cat > /etc/rancher/k3s/registries.yaml <<EOF mirrors: docker.io: endpoint: - "http://hub-mirror.c.163.com" - "https://docker.mirrors.ustc.edu.cn" - "https://registry.docker-cn.com" EOF
systemctl restart k3s
报错1 Error: INSTALLATION FAILED: Kubernetes cluster unreachable: Get "": dial tcp 127.0.0.1:8080: connect: connection refused
解决方法 编辑/etc/profile
vim /etc/profile 追加内容:
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml 刷新配置
source /etc/profile
常用的别名 直接编写
vim ~/.bash_aliases
alias k='kubectl'
alias kg='kubectl get'
alias kgp='kubectl get pods'
alias kaf='kubectl apply -f'
alias kd='kubectl delete'
alias kdf='kubectl delete -f'
alias kdes='kubectl describe'